>  기사  >  PHP 프레임워크  >  ThinkPHP에서 초기화와 구성의 차이점 이해

ThinkPHP에서 초기화와 구성의 차이점 이해

coldplay.xixi
coldplay.xixi앞으로
2020-08-12 17:15:371992검색

ThinkPHP에서 초기화와 구성의 차이점 이해

ThinkPHP의 두 함수 초기화()와 constructor()는 모두 생성자로 이해될 수 있습니다. 전자는 TP 프레임워크에 고유하고 후자는 PHP 생성자입니다. 그러면 둘의 차이점은 무엇입니까?

인터넷에서 검색해 보면 둘이 같다는 답변이 많습니다. ThinkPHP에서 초기화는 PHP의 구문과 동일합니다. 그렇다면 왜 tp는 구문을 사용하지 않고 자체적으로 ThinkPHP를 만든다고 말하는 것은 잘못된 것입니다. 초기화 생성자의 버전?

관련 학습 권장 사항: thinkphp

직접 시도해 보시면 둘 사이의 차이점을 알게 될 것입니다.

a.php

class a{

  function __construct(){

    echo 'a';

  }

}

b.php (참고: 여기 생성자는 parent::__construct();를 호출하지 않습니다.)

include 'a.php';

class b extends a{

  function __construct(){

    echo 'b';

  }

}

 

$test=new b();

실행 결과:

b

클래스 b가 클래스를 상속하지만 이를 볼 수 있습니다. a, 출력 결과는 프로그램이 클래스 b의 생성자만 실행하고 상위 클래스의 생성자를 자동으로 실행하지 않았음을 증명합니다.

b.php의 생성자를 parent::__construct()로 추가하면 달라집니다. parent::__construct(),就不同了。

include 'a.php';

class b extends a{

  function __construct(){

    parent::__construct();

    echo 'b';

  }

}

 

$test=new b();

那么输出结果是:

ab

此时才执行了父类的构造函数。

我们再来看看thinkphp的initialize()函数。

BaseAction.class.php

class BaseAction extends Action{

  public function _initialize(){

       echo 'baseAction';

  }

 
 

IndexAction.class.php

class IndexAction extends BaseAction{

  public function (){

       echo 'indexAction';

    }

运行Index下的index方法,输出结果:

baseActionindexAcition

可见,子类的_initialize方法自动调用父类的_initialize方法。而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();rrreee

그러면 출력 결과는 다음과 같습니다.

ab

이때 상위 클래스의 생성자가 실행됩니다. 🎜🎜thinkphp의 초기화() 함수를 다시 살펴보겠습니다. 🎜rrreee🎜🎜🎜Index에서 index 메소드를 실행하면 출력 결과는 다음과 같습니다. 🎜🎜🎜🎜🎜baseActionindexAcition🎜🎜🎜하위 클래스의 _initialize 메소드가 자동으로 _initialize 메소드를 호출하는 것을 볼 수 있습니다. 부모 클래스. PHP의 생성자 구성의 경우 상위 클래스의 메서드를 호출하려면 하위 클래스 생성자에서 parent::__construct();를 명시적으로 호출해야 합니다. 이것이 초기화와 구성의 차이점입니다. ThinkPHP. 🎜🎜🎜관련 추천: 🎜프로그래밍 비디오 강좌🎜🎜🎜

위 내용은 ThinkPHP에서 초기화와 구성의 차이점 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제