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

Thuộc tính và phương thức tĩnh trong PHP

Giới thiệu

Trong một lớp PHP, các thuộc tính và phương thức được khai báo với từ khóa static không thể được truy cập bởi đối tượng của nó với sự trợ giúp của toán tử ->. Trên thực tế, đối tượng không bắt buộc phải truy cập vào bất kỳ thể hiện nào của lớp. Chế độ hiển thị mặc định của các mục tĩnh trong một lớp là công khai

thuộc tính tĩnh

Để truy cập thuộc tính tĩnh từ bên ngoài lớp, chúng ta cần sử dụng toán tử phân giải phạm vi (::) cùng với tên của lớp. Một biến chuỗi đánh giá thành tên của lớp cũng có thể cung cấp cho thuộc tính tĩnh

<?php
class testclass{
   static $name="test";
}
echo testclass::$name;
$var="testclass";
echo $var::$name;
?>

để sử dụng static propery bên trong bất kỳ phương thức nào của cùng một lớp, hãy sử dụng self từ khóa thay vì -> toán tử được sử dụng để truy cập các thuộc tính cá thể.

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
$obj=new testclass();
$obj->test();
?>

Bất kỳ thuộc tính tĩnh nào được khai báo trong lớp cha đều có thể được tham chiếu bên trong một phương thức của lớp con, bằng cách sử dụng cha từ khóa cùng với toán tử phân giải phạm vi

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
class myclass extends testclass{
   public function mytest(){
      echo parent::$name;
   }
}
$obj=new myclass();
$obj->mytest();
?>

phương thức tĩnh

Khi một phương thức được khai báo là tĩnh, biến giả $ this không có sẵn cho nó. Do đó, các thuộc tính cá thể của một lớp không thể được truy cập trong nó. Phương thức tĩnh được gọi theo tên của lớp cùng với toán tử phân giải phạm vi

Trong ví dụ sau, lớp có một thuộc tính tĩnh $ count sẽ xuất hiện mỗi khi phương thức khởi tạo được thực thi (tức là cho mỗi đối tượng). Bên trong lớp, có một hàm tĩnh lấy giá trị của thuộc tính tĩnh

Ví dụ

<?php
class testclass{
   static $count=0;
   function __construct(){
      self::$count++;
   }
   static function showcount(){
      echo "count = " . self::$count;
   }
}
$a=new testclass();
$b=new testclass();
$c=new testclass();
testclass::showcount();
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau -

count = 3