PHP에서 바인딩
후기 정적 바인딩(LSB)은 후기 바인딩과 정적 바인딩의 조합으로 두 가지 다른 개념입니다.
공전?
개체 생성이 필요하지 않은 경우 정적 호출을 수행합니다. 자세한 내용이 필요한 경우 이 게시물을 읽을 수 있습니다.
PHP 정적 이해
Julien Maury ・ 2020년 3월 5일 ・ 3분 읽기
#php
#static
클래스가 부모 클래스에서 상속되는 경우에도 정적 호출을 사용하는 것은 드문 일이 아닙니다. 변하지 않는 일부 기능이 필요할 수 있습니다.
정적 바인딩
때때로 사람들은 초기 바인딩이라는 다른 용어로 정적 바인딩을 참조합니다.
범위 확인 연산자를 사용할 때 정적 바인딩이 발생합니다
::
.자식 클래스의 어머니 클래스에서 상속할 때 직관에 반하는 동작이 있습니다(아마도^^).
<?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부터 사용할 수 있습니다. 간단한 키워드 덕분에 상속에 대한 정적 메서드 및 변수의 사용 위험이 줄어듭니다.
Reference
이 문제에 관하여(PHP에서 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmau111/binding-in-php-3dic텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)