Phương thức tĩnh và $this trong OOP PHP
Bên trong các phương thức tĩnh, $this không khả dụng.
Điều này xảy ra vì các phương thức tĩnh
có thể được gọi bên ngoài ngữ cảnh của đối tượng,
chỉ bằng cách tham chiếu đến tên lớp.
Trong các phương thức thông thường, cả thuộc tính/phương thức tĩnh lẫn thuộc tính/phương thức thông thường đều khả dụng.
Chúng ta hãy xem xét các ví dụ. Ví dụ về phương thức thông thường:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // sẽ in ra 'static'
echo $this->usualProperty; // sẽ in ra 'usual'
}
}
$test = new Test;
$test->method();
?>
Ví dụ về phương thức tĩnh:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // sẽ in ra 'static'
echo $this->usualProperty; // sẽ báo lỗi
}
}
$test = new Test;
$test::method();
?>