>  기사  >  백엔드 개발  >  ThinkPHP의 초기화()와 생성자 constructor()의 사용법 분석

ThinkPHP의 초기화()와 생성자 constructor()의 사용법 분석

不言
不言원래의
2018-06-07 16:18:122871검색

이 글에서는 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 중국어 웹사이트를 주목해 주세요!

관련 권장사항:

PHP의 move_uploaded_file() 함수

ThinkPHP

클래스의 생성자 _construct()와 _initialize()의 차이점

위 내용은 ThinkPHP의 초기화()와 생성자 constructor()의 사용법 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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