최근에 작업한 프로젝트는 PHP4를 기반으로 했습니다. 저는 PHP5에서 객체를 사용하는 데 익숙합니다. PHP4를 사용하면 필연적으로 많은 불편함을 겪게 됩니다.
공용, 정적, 비공개, 보호 키워드를 지원하지 않습니다. , 가장 우울한 것 예, 소멸자는 지원되지 않습니다:
이 기사에서는 PHP의 Register_shutdown_function을 사용하여 PHP4에서 클래스의 소멸자를 시뮬레이션합니다
우리는 생성자에 소멸자를 등록합니다.
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); $sample2 = new sample("HuiXinchen");
이 스크립트를 실행합니다
닫는 함수를 등록할 때 $this 키워드를 사용했기 때문에 반대 변수를 덮어쓰더라도 소멸자는 여전히 올바르게 호출될 수 있습니다. 예:
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); $sample = "laruence"; //覆盖对象变量
$sample을 덮어썼지만 이 스크립트를 실행하면 다음 코드에서도 소멸자가 여전히 올바르게 호출될 수 있음을 알 수 있습니다.
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); unset($sample);
소멸자는 여전히 올바르게 호출될 수 있습니다.
위 내용은 php4에서 시뮬레이션된 클래스의 소멸자 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!