이 글에서는 ThinkPHP의 _initialize()와 클래스 생성자 _construct()의 사용법을 주로 소개합니다. ThinkPHP에서 클래스 초기화 시 서브클래스를 구성하는 방법을 예제 형식으로 분석합니다. 필요한 친구들은 더 중요한 개념을 참고하면 됩니다
이 글에서는 ThinkPHP의 __initialize()와 클래스 생성자 __construct()를 예제를 통해 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다:
모듈 클래스가 상위 클래스를 상속하고 상위 클래스가 정의되어 있기 때문에 PHP의 __construct를 자연스럽게 사용할 수 없습니다.
1. __initialize()는 PHP 클래스의 함수가 아닙니다. php 클래스 유일한 생성자는 __construct()입니다.
2. 클래스 초기화: 하위 클래스에 자체 생성자(__construct())가 있으면 자체 생성자를 호출하여 초기화합니다. 초기화합니다.
3. 하위 클래스와 상위 클래스 모두 __construct() 함수가 있는 경우 하위 클래스를 초기화할 때 상위 클래스의 __constrcut()을 동시에 호출하려면 하위 클래스에서 parent::__construct()를 사용하면 됩니다. ).
다음과 같이 두 개의 클래스를 작성하면:
class Action{ public function __construct() { echo 'hello Action'; } } class IndexAction extends Action{ public function __construct() { echo 'hello IndexAction'; } } $test = new IndexAction; //output --- hello IndexAction
분명히 하위 클래스 IndexAction을 초기화할 때 자체 생성자를 호출하므로 출력은 'hello IndexAction'이지만 하위 클래스를 다음과 같이 수정합니다.
class IndexAction extends Action{ public function __initialize() { echo 'hello IndexAction'; } }
그런 다음 하위 클래스 IndexAction에는 자체 생성자가 없기 때문에 출력은 'hello Action'입니다. 하위 클래스를 초기화할 때 동시에 상위 클래스의 생성자를 호출하려면 어떻게 해야 할까요?
class IndexAction extends Action{ public function __construct() { parent::__construct(); echo 'hello IndexAction'; } }
이렇게 하면 두 문장이 물론, 또 다른 방법은 상위 클래스에서 하위 클래스의 메서드를 호출하는 것입니다.
class Action{ public function __construct() { if(method_exists($this,'hello')) { $this -> hello(); } echo 'hello Action'; } } class IndexAction extends Action{ public function hello() { echo 'hello IndexAction'; } }
이런 식으로 두 문장을 동시에 출력할 수 있으며, 여기의 하위 클래스는 ThinkPHP의 __initialize()와 유사합니다.
그래서 ThinkPHP에서 __initialize()의 등장은 단지 프로그래머가 하위 클래스를 작성할 때 parent::__construct()를 자주 사용하는 것을 피하고 동시에 프레임워크에서 상위 클래스의 생성자를 올바르게 호출할 수 있도록 하기 위한 것입니다. , 우리는 ThnikPHP에서 하위 클래스를 초기화할 때 __construct() 대신 __initialize()를 사용합니다. 물론 프레임워크를 수정하여 __initialize() 함수를 원하는 함수 이름으로 수정할 수도 있습니다.
위는 전체 내용입니다. 이 기사가 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 주목해 주세요!
관련 권장사항:
클래스의 생성자 _construct()와 _initialize()의 차이점
위 내용은 ThinkPHP의 초기화()와 생성자 constructor()의 사용법 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!