>  기사  >  백엔드 개발  >  PHP 생성자에서 관련 없는 클래스의 생성자를 호출한다는 특별한 의미는 무엇입니까?

PHP 생성자에서 관련 없는 클래스의 생성자를 호출한다는 특별한 의미는 무엇입니까?

黄舟
黄舟원래의
2017-07-02 09:56:451037검색

Yii2의 시작 과정을 보고 있는데, Application constructor의 상위 클래스가 이렇게 작성되어 있습니다. 여기에서 호출할 때 마지막 문장인 Component::construct($config)가 특별한 의미를 갖는지 묻고 싶습니다.

    public function construct($config = [])
    {
        Yii::$app = $this;
        $this->setInstance($this);

        $this->state = self::STATE_BEGIN;

        $this->preInit($config);

        $this->registerErrorHandler($config);

        Component::construct($config);
    }

주로 코드를 추적하는 과정에서 이해할 수 없는 문제가 있기 때문에
Component::construct($config)---->Object::construct($config)--->Yii ::configure( $this,$config)
Yii::configure:

  public static function configure($object, $properties)
    {
        foreach ($properties as $name => $value) {
            $object->$name = $value;
        }

        return $object;
    }

해당 setter 함수는 실제로 여기에서 호출됩니다. $config에는 일반적으로 구성 요소의 설정이 포함되어 있으므로 setComponents 함수는 This 함수는 Application 상위 클래스에 의해 정의되는데 $this 인스턴스가 Application 함수를 호출할 수 있는 이유는 무엇입니까? $this는 분명히 Component의 인스턴스이므로 이해할 수 없습니다.

애플리케이션이 Component의 생성 메소드를 호출합니다. Object 클래스를 상속받습니다. Application

의 함수를 호출하는 것이 갑자기 생각났는데, Application

extends 모듈은 ServiceLocator를 확장하고 Component는 Object를 확장하므로 응용 프로그램 생성자의 Component::construct는 기본적으로 다중 계층 상속을 사용하여 상위 클래스의 생성자를 호출하므로 $this in Object는 궁극적으로 Application 인스턴스를 가리킨다는 것을 이해했습니다. 아아아아

위 내용은 PHP 생성자에서 관련 없는 클래스의 생성자를 호출한다는 특별한 의미는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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