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é.