이 글에서는 주로 ThinkPHP의 클래스 생성자 _construct()와 _initialize()의 차이점을 소개하고 있습니다. 필요하신 친구들 아래에서 함께 살펴볼까요?
머리말
THINKPHP에 익숙한 php퍼들은 기본적으로 이 방법에 익숙하다고 생각합니다. _initialize()
저희는 이 방법을 거의 사용하지 않습니다. _construct()
플러그인을 직접 작성하지 않는 이상 거의 사용되지 않습니다.
오늘 코드를 보다가 문득 _construct()
PHP 내장 구축 방법이 눈에 들어왔습니다. 이전에 Java를 배울 때 자주 접했던 것이지만 첫인상은 낯설었습니다. , 오랫동안 사용하지 않았습니다. 기본적으로 잊어 버렸습니다. 평소 지식의 핵심
을 작은 노트에 적는 것이 습관인데, 오랫동안 글을 쓰지 않아서 고등학교 시절의 우아하고 스마트한 글쓰기 스타일이 완전히 사라졌습니다. 다른 차원으로. 이전 생각들과 더불어 기술 전문가들에게 블로그 작성 방법을 배우게 되었습니다. 이는 자랑을 하려는 것이 아니라 시간이 지나면서 제가 작업한 결과물이 모두 사라지는 것을 방지하기 위함입니다. 자세한 소개를 살펴보겠습니다.
먼저 코드를 붙여넣습니다(내 환경은 TP 프레임워크를 사용하는 wamp입니다).
FatherAction.class php 파일이 생성되었습니다.
<?php class FatherAction extends Action{ public function construct(){ echo 'father'; } } ?>
SonAction.class.php 파일 생성
<?php class SonAction extends FatherAction{ public function construct(){ echo 'son'; } function index(){ } } ?>
하위 클래스 SonAction에서 index()
를 실행하여 출력을 확인합니다.
son
하위 클래스를
<?php class SonAction extends FatherAction{ public function construct(){ parent::construct(); echo 'son'; } function index(){ } } ?>
로 변경하면 실행 결과는
fatherson
위와 같습니다. 결과는 다음과 같습니다. :
은 하위 클래스의 생성자를 실행할 때 상위 클래스의 생성자를 자동으로 호출하지 않습니다. 호출하려면 parent::construct()
When을 추가하세요. 위의 구성 방법을 THINKPHP_initialize()
메서드로 변경하면 결과가 이전 것과 일치한다는 것을 알 수 있습니다. 상위 클래스의 _initialize()
메서드를 실행하려면 다음 문장도 사용해야 합니다. 🎜 >parent::_initialize()
가 THINKPHP의 construct()
메소드와 동일하다는 뜻인가요? _initialize()
먼저 두 개의 코드를 붙여넣습니다:
<?php class FatherAction extends Action{ public function construct(){ echo 'father'; } } ?>
메서드 _initialize()
를 호출하지 않은 다음
<?php class SonAction extends FatherAction{ public function _initialize(){ echo 'son'; } function index(){ } } ?>
<?php class FatherAction extends Action{ public function construct(){ if(method_exists($this,"hello")){ $this->hello(); } echo 'father'; } } ?>
임을 알 수 있습니다. 이로부터 이라는 결론을 내릴 수 있습니다. THINKPHP의 상위 클래스에 생성자가 있고 하위 클래스가 없으면 THINKPHP는 하위 클래스의
를 실행하지 않습니다. THINKPHP의 상위 클래스와 하위 클래스에 모두 생성자가 있는 경우 _initialize()
--를 사용해야 합니다. 상위 클래스의 생성자를 호출합니다. ---------------
parent::construct()
THINKPHP의 하위 클래스에 _initialize()
생성자와
생성자(개인적으로 테스트해 본 결과 위 코드에는 없습니다.) construct
_initialize()
construct
위 내용은 ThinkPHP의 클래스 생성자 _construct()와 _initialize()의 차이점에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!