최근 ThinkPHP 프레임워크를 공부하다가 _initialize() 함수를 보고 간략하게 요약해 보았습니다. 구글과 바이두 튜토리얼, 얘기를 많이 한 느낌이고 다 테스트 중인데 내용이 안 나왔네요~ 실험 버전: ThinkPHP 3.2.3, PHP5.6. 하위 클래스에서 상위 클래스와 하위 클래스의 생성자를 동시에 호출할 수 있도록 _initialize() 함수가 등장합니다. 가장 간단한 방법을 이해하고 싶습니다."/> 최근 ThinkPHP 프레임워크를 공부하다가 _initialize() 함수를 보고 간략하게 요약해 보았습니다. 구글과 바이두 튜토리얼, 얘기를 많이 한 느낌이고 다 테스트 중인데 내용이 안 나왔네요~ 실험 버전: ThinkPHP 3.2.3, PHP5.6. 하위 클래스에서 상위 클래스와 하위 클래스의 생성자를 동시에 호출할 수 있도록 _initialize() 함수가 등장합니다. 가장 간단한 방법을 이해하고 싶습니다.">

 >  기사  >  백엔드 개발  >  ThinkPHP 소스 코드의 _initialize 및 __construct 설명 구성 2 튜토리얼 구성 2 크랙 중국어 버전 초기화 실패

ThinkPHP 소스 코드의 _initialize 및 __construct 설명 구성 2 튜토리얼 구성 2 크랙 중국어 버전 초기화 실패

WBOY
WBOY원래의
2016-07-29 08:54:281675검색

최근 ThinkPHP 프레임워크를 공부하다가 _initialize() 함수를 보고 간단하게 요약을 해봤습니다

구글이나 바이두의 튜토리얼을 잠깐 보다가 느낀 점은 말이 많았는데 모두 테스트 중이었어요~

실험 버전: ThinkPHP 3.2.3, PHP5.6. 하위 클래스에서 상위 클래스와 하위 클래스의 생성자를 동시에 호출할 수 있도록

_initialize() 함수가 등장합니다.

이를 가장 쉽게 파악하는 방법은 가장 신뢰할 수 있는 TP의 소스코드를 공개해 보는 것입니다.

경로: ThinkPHP3.2.3/ThinkPHP/Library/Think/Controller.class.php. (ΔController는 추상 클래스입니다.)

다음을 볼 수 있습니다:
ThinkPHP 소스 코드의 _initialize 및 __construct 설명 구성 2 튜토리얼 구성 2 크랙 중국어 버전 초기화 실패

여기서 Controller 추상 클래스는 __construct() 메서드를 재정의합니다. 세 개의 빨간색 선에 집중하세요. 이것은 실제로 _initialize() 메서드에 대한 특별한 선언이 없으며 이를 할당합니다. .특징.

_initialize()가 우연히 __construct()에 있기 때문에 순전히 생성자의 기능을 갖고 있음을 알 수 있습니다. (클래스가 인스턴스화되면 생성자 __construct가 실행됩니다. 현재 클래스가 존재하는 경우 _initialize() 메소드, 부수적으로 실행되는 _initialize())

네이티브 PHP에서 하위 클래스와 상위 클래스의 생성자를 동시에 호출해야 하는 요구 사항을 충족하는 방법을 살펴보겠습니다.
ThinkPHP 소스 코드의 _initialize 및 __construct 설명 구성 2 튜토리얼 구성 2 크랙 중국어 버전 초기화 실패

ThinkPHP는 어떻습니까?
ThinkPHP 소스 코드의 _initialize 및 __construct 설명 구성 2 튜토리얼 구성 2 크랙 중국어 버전 초기화 실패

요구 사항을 완료하려면 네이티브 코드가 하위 클래스에서 parent::__construct()를 호출하고 실행해야 합니다.

ThinkPHP에서는 부모 클래스를 특별히 처리한 후 _initialize() 자체에서 이 함수를 완료할 수 있습니다. 사실 ThinkPHP의 _initialize 함수의 원래 의도는 부모 클래스와 하위 클래스 구성물을 동시에 호출하는 것인 것 같습니다. 시간. 기능에 사용됩니다.

TP에서 _initialize()와 __construct() 사용 시 주의사항을 정리합니다

  • _initialize()와 __construct()가 동시에 나타나면 _initialize() __construct()가 다시 작성되었고 _initialize()가 더 이상 호출되지 않기 때문에 유효하지 않습니다.

  • 부모 클래스와 자식 클래스의 생성자를 동시에 호출하려면 부모 클래스의 __construct()에서 이를 처리해야 합니다.

    <code>if(method_exists($this,’_initialize’)){
    
    $this -> _initialize();
    
    }
    </code>
  • 둘 다 하위 클래스로 재정의하거나 다시 작성할 수 없습니다. 그렇지 않으면 상위 클래스와 하위 클래스가 동시에 호출하는 함수가 유효하지 않게 됩니다.

지금으로서는 (ThinkPHP3.2.3), _initialize()는 취약합니다. 예, 결국 수동 처리가 필요합니다. 이 경우 _initialize()의 역할은 명명 제약일 뿐입니다. 다음과 같은 경우 _initialize를 다른 이름으로 변경할 수 있기 때문입니다. 나는 공식이 이후 버전에서 이 기능을 개선할 것이라고 믿습니다.

위 내용은 초기화 및 구성 내용을 포함하여 ThinkPHP 소스 코드의 _initialize 및 __construct에 대한 설명을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.