Private, Protected, Public trong PHP OPP giới hạn quyền truy cập giúp hệ thống bảo mật và ràng buộc hơn. Đó là một trong số tính chất tính bảo mật rất hay trong lập trình hướng đối tượng. Vậy việc giới hạn quyền truy cập thế nào trong PHP OOP bạn hãy tham khảo bài viết sau đây nhé. À trước tiên bạn cần hiểu rõ về kế thừa trong php và cách gọi phương thức thuộc tính trong php đã nhé đã có kiến thức tổng quan hơn.

Tổng quát về giới hạn quyền PHP OOP

– Lập trình hướng đối tượng PHP có 3 phạm vi để giới hạn quyền: Private, Protected, Public.

– Khai báo quyền truy cập sử dụng cú pháp sau:

// khai báo lớp
class className
{
    //khai báo thuộc tính
    visibility $propertyName;

    //Khai báo phương thức
    visibility function methodName()
    {

    }
}

Lưu ý: từ khóa visibility đại diện 1 trong 3 quyền trên Private, Protected, Public

Private: khi thuộc tính và phương thức dùng thì chỉ gọi được trong class đó, không gọi được ở lớp kế thừa và bên ngoài lớp

Protected: khi thuộc tính và phương thức dùng thì chỉ gọi được trong class đó và lớp kế thừa, không dùng được bên ngoài lớp

Public: khi thuộc tính và phương thức dùng thì gọi được ở trong class đó , lớp kế thừa và bên ngoài lớp

Nếu visibility không để gì thì bạn hiểu đó là public nhé.

Private

– Là quyền hẹp nhất, khi thuộc tính và phương thức sử dụng Private thì chỉ sử dụng trong class đó, không truy xuất được từ bên ngoài và lớp kế thừa (kế thừa trong PHP là gì xem lại bài viết trước tại đây)

– Khai báo như sau:

class className
{
    //khai báo thuộc tính
    private $propertyName;

    //Khai báo phương thức
    private function methodName()
    {
   
    }
}

– Ví dụ sai khi dùng Private

class className
{
    //khai báo thuộc tính
    private $propertyName;

    //Khai báo phương thức 
    private function methodName()
    {
        // Đúng vì gọi được trong lớp
        $this->propertyName = "Tên thuộc tính";

    	echo "Test";

    }
}

class ChildClass extends className
{
	  function childMethod()
	  {
	  	// Sai vì không gọi được trong lớp kế thừa
	  	 $this->propertyName = "Tên thuộc tính";

	  }

}

$classname = new className();

// Sai vì không gọi được từ bên ngoài lớp
$classname->methodName();

Protected

– Chỉ sử dụng được trong class đó và lớp kế thừa class. Không truy xuất được từ bên ngoài

– Khai báo như sau:

class className
{
    //khai báo thuộc tính
    protected $propertyName;

    //Khai báo phương thức
    protected function methodName()
    {

    }
}

– Ví dụ khi dùng Protected

class className
{
    //khai báo thuộc tính
    protected $propertyName;

    //Khai báo phương thức
    protected function methodName()
    {
        // Đúng vì gọi được trong lớp
        $this->propertyName = "Tên thuộc tính";

    	echo "Test";

    }
}

class ChildClass extends className
{
	  function childMethod()
	  {
	  	// Đúng vì gọi được trong lớp kế thừa
	  	 $this->propertyName = "Tên thuộc tính";

	  }

}

$classname = new className();

// Sai vì không gọi được từ bên ngoài lớp
$classname->methodName();

Public

– Quyền rộng nhất có thể gọi trong lớp đó, lớp kế thừa và ngoài lớp

– Khai báo như sau

class className
{
    //khai báo thuộc tính
    public $propertyName;

    //Khai báo phương thức là pubic hoặc để trống không ghi
    public function methodName()
    {

    }
}

– Ví dụ về public

class className
{
    //khai báo thuộc tính
    public $propertyName;

    //Khai báo phương thức là pubic hoặc để trống không ghi
    public function methodName()
    {
    	echo "Test";

    }
}

class ChildClass extends className
{
	  function childMethod()
	  {
	  	// Đúng vì gọi được trong lớp kế thừa
	  	 $this->propertyName = "Tên thuộc tính";

	  }

}

$classname = new className();

// Đúng vì gọi được từ bên ngoài lớp
$classname->methodName();

Tổng kết

Với php nâng cao hay php hướng đối tượng việc giới hạn quyền truy cập là điều phải làm giúp hệ thông an toàn bảo mật hơn. Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về giới hạn quyền trong PHP OOP nhé.

Tagged:

Tác giả

Thanh Chính

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *