Lớp riêng trong php
Như đã nhắc đến trong bài viết Phần 1. Hướng đối tượng là gì, cách khai báo, thiết lập và truy xuất đối tượng, thuộc tính, phương thức ,hôm nay mình giới thiệu đến các bạn bài hướng dẫn mang chủ đề. “Hướng đối tượng, tầm xa của thuộc tính và phương thức trong PHP” Mục tiêu của tầm nhìn chính là gia tăng khả năng kiểm tra các đối tượng, phương thức và thuộc tính sẽ được chỉ định thêm các giá trị tầm xa. a) Thuộc tính và phương thức mang tầm xa công cộngVới các thuộc tính và phương thức mang tầm xa công cộng, chúng ta có thể được truy cập ở bất cứ đâu , bao gồm các bên . pro1; // Xuat ra trinh duyet chu "Toi la thuoc tinh thu 1" echo $kungfuClass -> pro2; // Xuat ra trinh duyet chu "Toi la thuoc tinh thu 2" echo $kungfuClass -> method1(); // Xuat ra trinh duyet chu "Toi la phuong thuc cua class KungfuClass !" ?> Thuộc tính và phương thức mang tầm xa là công khai sẽ được truy xuất bất kỳ phạm vi nào dù là bên trong hay bên ngoài lớp chứa nó b) Thuộc tính và phương thức mang tầm xa được bảo vệĐối với những thuộc tính hay phương thức mang tầm xa được bảo vệ, chúng chỉ có thể được truy xuất bên trong lớp hoặc những lớp kế thừa lớp này. At ví dụ sau pro1; ?> Khi thực thi đoạn script trên, hệ thống sẽ thông báo lỗi là. Lỗi nghiêm trọng. Gọi đến phương thức được bảo vệ … Điều này có nghĩa là đối với các thuộc tính hay phương thức mang tầm xa được bảo vệ thì chúng sẽ không thể truy xuất Edit code back as 2 ví dụ dưới đây Ví du 1 pro1; } } $kungfuClass = new KungfuClass(); echo $kungfuClass->method2();// Xuất ra ngoài trình duyệt dòng chữ "Toi la thuoc tinh cua class KungfuClass!" ?> Ở ví dụ 1, ta có thể truy xuất thuộc tính $pro1 thông qua phương thức method2, và vì method2 mang tầm công cộng, nên ta có thể truy xuất phương thức này bên ngoài lớp, và từ đó lấy giá trị của thuộc tính $pro1 pro1; } } class KungfuChildClass extends KungfuClass{ public function callmethod1(){ return $this->method1(); } } $kungfuChildClass = new KungfuChildClass(); echo $kungfuChildClass->callmethod1();// Xuất ra ngoài trình duyệt dòng chữ "Toi la phuong thuc cua class KungfuClass !" ?> Ở ví dụ 2, lớp KungfuchildClass là Lớp con kế thừa Lớp cha là KungfuClass, chính vì thế nó là hệ thống qua phương thức gọi phương thức1 sẽ truy xuất được phương thức 1 mang tầm xa được bảo vệ của Lớp cha mà không gặp bất kỳ trở ngại nào, đồng thời . ” c ) Thuộc tính hoặc phương thức mang tầm xa riêngTầm xa riêng chính là tầm xa khó tính nhất trong 3 loại tầm nhìn là công khai, được bảo vệ, riêng tư. Ví dụ về các thuộc tính hay phương thức mang tầm xa này chỉ có thể được truy xuất bên trong lớp chính chứa nó. Kể cả những lớp kế thừa lớp này cũng không thể truy xuất được. Để hiểu rõ hơn chúng ta hãy nhìn 2 ví dụ dưới đây Ví du 1
pro1; } } $kungfuClass = new KungfuClass(); echo $kungfuClass->method1();// Báo lỗi Call to private method... ?> Ví dụ 2 pro1; } } class KungfuChildClass extends KungfuClass { public function callmethod1(){ return $this->method1; } } $kungfuChildClass = new KungfuChildClass(); echo $kungfuChildClass->callmethod1();// tiếp tục báo lỗi Call to private method... ?> 2 ví dụ trên đều báo lỗi liên quan đến vấn đề truy xuất biến ở cấp độ riêng tư, chính vì thế để có thể truy xuất thuộc tính hay phương thức mang tầm vực riêng tư, chúng ta sửa lại đoạn mã như sau pro1; } } $kungfuClass = new KungfuClass(); echo $kungfuClass->method2();// Xuất ra dòng chữ "Toi la thuoc tinh cua class KungfuClass!" ?> d ) Thuộc tính và phương thức tĩnh Từ khóa tĩnh cho phép các thuộc tính và phương thức có thể truy cập mà không cần khởi tạo lớp. Bạn chỉ cần cung cấp theo công thức
“Một trong những lợi ích chính khi sử dụng thuộc tính tĩnh là chúng giữ các giá trị được lưu trữ trong suốt khoảng thời gian script tồn tại. ” Để giải thích về điều này, chúng ta hãy cùng nhau xem xét các ví dụ dưới đây và tự suy tính ra mục tiêu của tĩnh cho bản thân mình '; } public function __destruct() { echo 'Class "', __CLASS__, '" bi huy. Lưu lại đoạn mã này và chạy trên trình duyệt sẽ xuất hiện lần lượt theo các dòng chữ ________số 8
Vì thế là xong, chúng ta đã kết thúc bài viết thứ 2 trong chuỗi bài viết nối tiếp về lập trình hướng đối tượng. có gì thắc mắc thì hãy để lại bình luận bên dưới nhé. Hơn |