PHP: Toán tử ::

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Toán tử (::) dùng để truy cập các thành phần static và hằng, nó cũng có tác dụng ghi đè các thuộc tính và phương thức của lớp.

Khi sử dụng toán tử này ngoài lớp thì ta đi kèm với tên của lớp đó.

Phiên bản PHP 5.3.0 cho phép tham chiếu tới lớp bằng cách sử dụng một biến, trong đó giá trị của biến không được là một từ khóa (selfparent và static).

Ví dụ 1: Sử dụng :: bên ngoài định nghĩa lớp.

<?php
class MyClass {
    const 
CONST_VALUE 'A constant value';
}


$classname 'MyClass';
echo 
$classname::CONST_VALUE// PHP 5.3.0

echo MyClass::CONST_VALUE;
?>

Ba từ khóa đặc biệt selfparent và static được dùng để truy cập các thuộc tính hoặc phương thức từ bên trong định nghĩa lớp.

Ví dụ 2: Sử dụng :: bên trong định nghĩa lớp.

<?php
class OtherClass extends MyClass
{
    public static 
$my_static 'static var';

    public static function 
doubleColon() {
        echo 
parent::CONST_VALUE "\n";
        echo 
self::$my_static "\n";
    }
}


$classname 'OtherClass';
echo 
$classname::doubleColon(); // PHP 5.3.0

OtherClass::doubleColon();
?>

Khi lớp con ghi đè một phương thức của lớp cha thì PHP sẽ không gọi phương thức của lớp cha. Điều này có nghĩa từ lớp con có thể gọi hoặc không gọi được phương thức của lớp cha. Điều này cũng được áp dụng cho Hàm tạo và Hàm hủy, Tải chồng, và Magic methods.

Ví dụ 3: Gọi phương thức của lớp cha.

<?php
class MyClass
{
    protected function 
myFunc() {
        echo 
"MyClass::myFunc()\n";
    }
}

class 
OtherClass extends MyClass
{
    
// Ghi đè phương thức của lớp cha
    
public function myFunc()
    {
        
// Nhưng vẫn có thể gọi phương thức đó của lớp cha
        
parent::myFunc();
        echo 
"OtherClass::myFunc()\n";
    }
}


$class = new OtherClass();
$class->myFunc();
?>

» Tiếp: Từ khóa final
« Trước: Tải chồng (Overloading)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!