Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP에서 늦은 정적 바인딩이란 무엇입니까?

<시간/>

후기 정적 바인딩의 기본 개념은 상속의 개념과 'self' 키워드의 개념이 동일한 규칙을 따르지 않는다는 것입니다. 예를 들어, 자식 클래스에서 호출된 부모 클래스의 'fun' 메서드는 'self'가 자식을 참조하도록 만들지 않습니다(예상대로).

후기 정적 바인딩의 개념은 새로운 키워드 '정적'을 가져옵니다. 이 키워드는 사용할 때 함수를 런타임 클래스 또는 함수가 처음 사용된 클래스에 바인딩합니다. 이 외에도 모든 정적 함수 또는 변수는 일반적으로 컴파일 시간이 아닌 런타임 중에 실행됩니다. 따라서 정적 변수에 값을 동적으로 할당해야 하는 경우 런타임 중에 발생하며 이를 후기 정적 바인딩이라고 합니다.

예시

<?php
class student
{
   public static $my_name = 'Joe';
   public static function getName()
   {
      return "The name of the student is : " . self::$my_name;
   }
   public static function getAge()
   {
      echo static::getName();
   }
}
class Professor extends student
{
   public static function getName()
   {
      return "The name of the student is : " . self::$my_name . " and age is 24.";
   }
}
student::getAge();
echo "\n";
Professor::getAge();
?>

출력

The name of the student is : Joe
The name of the student is : Joe and age is 24.

'student'라는 이름의 클래스에는 이름과 이름을 가져오는 함수가 포함되어 있습니다. 또 다른 함수는 학생의 나이를 가져옵니다. 'professor'라는 이름의 클래스는 학생 클래스를 확장하고 기능도 상속됩니다. 나이를 가져오는 함수는 학생과 교수 모두의 인스턴스에서 호출됩니다.