Trong PHP , tĩnh và const là hai thứ khác nhau.
const biểu thị hằng số lớp. Chúng khác với các biến thông thường vì chúng không có '$' ở trước chúng và không thể có bất kỳ công cụ sửa đổi hiển thị nào (công khai, được bảo vệ, riêng tư) trước chúng. Cú pháp của chúng:
class Test
{
const INT = "/^\d+$/";
}
Bởi vì chúng không đổi, chúng không thay đổi.
Tĩnh biểu thị dữ liệu được chia sẻ giữa các đối tượng của cùng một lớp. Dữ liệu này có thể được sửa đổi. Ví dụ sẽ là một lớp học theo dõi số lượng phiên bản được phát tại một thời điểm:
class HowMany
{
private static $count = 0;
public function __construct()
{
self::$count++;
}
public function getCount()
{
return self::$count;
}
public function __destruct()
{
self::$count--;
}
}
$obj1 = new HowMany();
$obj2 = new HowMany();
echo $obj1->getCount();
unset($obj2);
echo $obj1->getCount();
Nguồn
2010-08-02 15:59:13
Khi một const của nó, nó sẽ được xử lý như là tĩnh nội bộ của trình biên dịch PHP tôi tin rằng vì giá trị của nó không thể thay đổi. –
nhưng giá trị của 'biến tĩnh' có thể thay đổi theo cách chúng được xử lý giống như' static' vì chúng không thể thay đổi hoàn toàn nhưng có thể thay đổi nếu nó phụ thuộc vào biến toàn cầu và 'biến toàn cầu' thay đổi trước' instance' của 'class' được tạo ra –