PHP에서 바인딩

5771 단어 phpwebdev
PHP의 바인딩을 이해하는 것은 이 고유한 언어를 사용하려는 모든 사람에게 필수적입니다.

후기 정적 바인딩(LSB)은 후기 바인딩과 정적 바인딩의 조합으로 두 가지 다른 개념입니다.

공전?



개체 생성이 필요하지 않은 경우 정적 호출을 수행합니다. 자세한 내용이 필요한 경우 이 게시물을 읽을 수 있습니다.




클래스가 부모 클래스에서 상속되는 경우에도 정적 호출을 사용하는 것은 드문 일이 아닙니다. 변하지 않는 일부 기능이 필요할 수 있습니다.

정적 바인딩



때때로 사람들은 초기 바인딩이라는 다른 용어로 정적 바인딩을 참조합니다.

범위 확인 연산자를 사용할 때 정적 바인딩이 발생합니다::.

자식 클래스의 어머니 클래스에서 상속할 때 직관에 반하는 동작이 있습니다(아마도^^).

<?php

class MotherClass {
    protected static $cat = "generation A";

    public static function displayCat() {
        echo self::$cat;
    }
}

class ChildClass extends MotherClass {
    protected static $cat = "generation B";
}

ChildClass::displayCat();// displays "generation A"

displayCat() 메서드는 부모 클래스에 정의되어 있기 때문에 자식 클래스로 호출해도 부모의 내용을 가져옵니다.

PHP는 메서드가 속한 클래스를 사용하여 이를 해결합니다.

늦은 바인딩



때때로 사람들은 후기 바인딩을 동적 바인딩이라는 다른 용어로 언급합니다.

초기 바인딩(정적 바인딩)과 달리 PHP는 런타임에 바인딩합니다. 객체 생성이 필요합니다.

<?php

class MotherClass {
    protected $cat = "generation A";

    public function displayCat() {
        echo $this->cat;
    }
}


class ChildClass extends MotherClass {
    protected $cat = "generation B";
}

$child = new ChildClass();
$child->displayCat();//displays "generation B"


이번에는 의도한 대로 "B세대"를 얻습니다.

늦은 정적 바인딩



하위 클래스에서 정적 항목(~ 재정의 출력)을 재정의하려면 키워드 static를 사용하십시오.

PHP 인터프리터는 런타임 동안 그대로 둡니다. 보류 상태와 같습니다.

<?php

class MotherClass {
    protected static $cat = "generation A";

    public static function displayCat() {
        echo static::$cat;
    }
}


class ChildClass extends MotherClass {
    protected static $cat = "generation B";
}

ChildClass::displayCat();// displays "generation B"


이번에는 의도한 대로 "B세대"도 얻습니다.

마무리



이 짧은 기사 덕분에 PHP 바인딩, 특히 늦은 정적 바인딩에 대해 더 많이 알게 되었기를 바랍니다.

이 기술은 PHP 5.3부터 사용할 수 있습니다. 간단한 키워드 덕분에 상속에 대한 정적 메서드 및 변수의 사용 위험이 줄어듭니다.

좋은 웹페이지 즐겨찾기