?
Clone object PHP4에서는 new 객체가 반환되면 객체 자체가 반환됩니다.
PHP5에서는 객체가 new이면 가리키는 객체가 반환됩니다. Handle"
이는 PHP5에서 객체 인스턴스($obj1)를 다른 변수($obj2)에 할당할 때 두 객체 모두 동일한 메모리 영역을 가리킨다는 의미입니다.
예:
php
클래스 테스트{
공개 $str;
}
$obj1=new test()
$obj1->str="obj1"; obj1;
$obj2->str="obj2";
echo $obj1->str;//"obj1"을 출력합니다
?> $obj1과 $obj2는 동일한 메모리 영역을 가리키므로 어떤 개체를 사용하여 멤버 변수의 값을 수정하면 다른 개체에 영향을 미치게 됩니다.
그러나 때로는 객체의 복사본(두 개의 독립된 메모리 영역)을 만들어야 할 경우 언어 명령 clone을 사용할 수 있습니다.
아래 예를 참조하세요.
코드 복사
public $str ;
}
$obj1=new test();
$obj1->str="obj1";
$obj2= 클론
$obj2->str= "obj2";
echo $obj1->str;//"obj2"를 출력합니다
?>
parent:::
self: : 현재 클래스를 가리키며 일반적으로 정적 멤버, 메서드 및 상수에 액세스하는 데 사용됩니다.
parent:: 상위 클래스를 가리키며 상위 클래스의 생성자와 메서드를 호출하는 데 자주 사용됩니다. 클래스이며 상위 클래스 및 상수의 멤버에 액세스하는 데에도 사용할 수 있습니다
참고: 상위 클래스의 특정 이름 대신 parent::를 사용해야 합니다. 이렇게 하면 클래스 계층 구조를 쉽게 변경할 수 있기 때문입니다. 예:
코드 복사
public function __construct(){
echo "부모 클래스의 생성자 호출
"
}
}
class Son은 Father를 확장합니다.
public function __construct(){
parent::__construct();//방법 1
// Father::__construct();//방법 2
echo "하위 클래스의 생성자 호출";
}
}
$son=new Son();
?>
결과:
상위 클래스의 생성자 호출
위에서 언급한 이유로
함수에는 하위 클래스 메서드 1의 생성자를 사용하는 것이 좋습니다.
instanceofinstance
코드 복사
public $name=__CLASS__
}
class Square는 Rectangle {
public $name=__CLASS__; Circle{
public $name=__CLASS__;
}
function checkIfRectangle($shape){
if ($shape instanceof Rectangle ){
echo $shape->name; }else {
echo "이 개체는 Rectangle 클래스의 인스턴스가 아닙니다.";
}
}
checkIfRectangle(new Square());//출력: Square
checkIfRectangle(new Circle());/ /출력: 개체가 Rectangle 클래스의 인스턴스가 아닙니다
?>
참고: __CLASS__는 현재 클래스의 이름을 저장하는 데 사용되는 특수 상수입니다.