Computer >> Máy Tính >  >> Lập trình >> PHP

Các liên kết tĩnh muộn trong PHP là gì?

Ý tưởng cơ bản đằng sau các liên kết tĩnh muộn là khái niệm kế thừa và khái niệm từ khóa 'self' không tuân theo các quy tắc giống nhau. Ví dụ:một phương thức "fun" trong lớp cha được gọi trong lớp con sẽ không làm cho "self" tham chiếu đến con (như mong đợi).

Khái niệm liên kết tĩnh trễ mang lại một từ khóa mới ‘static’, khi được sử dụng, sẽ liên kết hàm với lớp thời gian chạy hoặc lớp mà hàm được sử dụng lần đầu tiên. Ngoài ra, bất kỳ hàm hoặc biến tĩnh nào thường được thực thi trong thời gian chạy chứ không phải trong thời gian biên dịch. Do đó, nếu một giá trị cần được gán động cho một biến tĩnh, thì nó sẽ xảy ra trong thời gian chạy và điều này được gọi là liên kết tĩnh muộn.

Ví dụ

<?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();
?>

Đầu ra

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

Một lớp có tên là "sinh viên" chứa một tên và một hàm tìm nạp tên đó. Một hàm khác lấy tuổi của học sinh. Một lớp có tên là ‘giáo sư’ mở rộng lớp sinh viên và hàm cũng được kế thừa. Hàm lấy tuổi được gọi đối với cả sinh viên và giáo sư.