Hướng dẫn dùng private static trong PHP
Show Đã đăng vào thg 4 27, 2017 6:51 SA 2 phút đọc Như ở phần cuối của bài static và final trong PHP mình có nói là giữa static và self nó có khác nhau ở trong một số trường hợp. Và để chứng minh cho điều đó thì bài hôm nay mình sẽ giới thiệu với mọi người những sự khác nhau đó. 1, Tổng quan.Nhìn chung thì cả VD:
Kết Quả:
Vậy liệu nó có cho ra các giá trị khác nhau khi chúng ta sử dụng tính kế thừa trong class? Để biết rõ hơn thì chúng ta sẽ tạ ra các ví dụ để so sánh nó. 2, So Sánh và kết luận.Vẫn là class ConNguoi như trên nhưng chúng ta sẽ khai báo thêm một class NguoiLon kế thừa class ConNguoi và override lại thuộc tính $name như sau:
Sau khi chạy dòng trên thì mình thu được kết quả như sau:
-Như các bạn đã thấy: Đối với self thì kết quả chạy như bình thường, còn với static thì sao nó lại báo là không thể truy cập vào thuộc tính private mà lại là NguoiLon::$name, phải chăng thằng static này đại diện cho đối tượng hiện tại nên không thể truy xuất được đến thuộc tính $name. Thôi được rồi, để chắc ăn hơn thì mình thử đổi visibility của biến $name thành protected xem sao?
Và đây là kết quả mình nhận được:
Giờ đã chạy được ngon lành, nhưng khi nó lại cho ra 2 kết quả khác nhau. Từ 2 ví dụ trên chúng ta tạm đưa ra kết luận là static nó có nguyên tắc gần như Để ok hơn nữa thì mình sẽ tiếp tục tạo ra ví dụ sau và chạy nó:
Ok, nó đã chạy được và cho ra kết quả giống với kết luận ở trên. Lúc này thì chẳng cần phải ngại ngần gì nữa mà không dám kết luận khẳng định. Kết LuậnSelf: Truy xuất đến class khai báo nó. Static: Truy xuất đến đối tượng hiện tại. 3, Lời kết.-Như vậy mình đã giới thiệu xong đến mọi người về sự khác nhau của self và static trong PHP, ngoài ra các bạn có thể xem thêm bài so sánh giữa this và self trong PHP của mình tại đây. 4, Nguồn.-https://toidicode.com/self-va-static-trong-php-128.html All rights reserved Tiếp tục với series PHP hướng đối tượng bài này chúng ta sẽ tìm hiểu về 2 khái niệm khá là hay trong hướng đối tượng nói chung và PHP hướng đối tượng nói riêng, đó là Static và final. Static là gì?-Static trong lập trình hướng đối tượng là một thành phần tĩnh (có thể là thuộc tính hoặc phương thức) mà nó hoạt động như một biến toàn cục, dù cho nó có được xử lý ở trong bất kỳ một file nào đi nữa (trong cùng một chương trình) thì nó đều lưu lại giá trị cuối cùng mà nó được thực hiện vào trong lớp. Khai báo static-Để khai báo một thuộc tính hay một phương thức là static thì chúng ta chỉ việc thêm từ khóa Cú Pháp:
VD: Mình sẽ khai báo lớp ConNguoi có thuộc tính tĩnh là name và phương thức tĩnh là getName,setName.
Ví dụ chứng minh-Để chứng minh những điều tôi nói phía trên là đúng thì tôi sẽ cho các bạn xem 2 ví dụ sau: +Khi không khai báo static.
+Khi khai báo thuộc tính là static.
Gọi thành phần tĩnhKhi bạn khai báo một thuộc tính hay một phương thức ở dạng static thì bạn sẽ không thể gọi bằng cách thông thường là dùng từ khóa Gọi phương thức và thuộc tính tĩnh trong class -Để gọi phương thức và thuộc tính tĩnh trong class thì chúng ta có thể sử dụng cú pháp VD:
Gọi phương thức và thuộc tính tĩnh ngoài class -Để gọi phương thức tĩnh ở bên ngoài class thì chúng ta có thể gọi bằng cách
truyền thống hoặc gọi theo cú pháp VD:
Kế thừa phương thức tĩnh từ lớp cha -Để kế thừa phương thức tĩnh từ lớp cha thì chúng ta vẫn sử dụng như cách truyền thống. VD:
Nhược điểm của static-Như ở trên mình có nói 'static nó hoạt động như một biến toàn cục' và cũng vì điều này mà khi sử dụng static trong chương trình thì nó sẽ chiếm nhiều tài nguyên hơn các thành phần thường. 2, Final.-Final dịch ra tiếng việt có nghĩa là sau cùng và trong lập trình hướng đối tượng thì final được ứng dụng vào class và phương thức. Final class-Khi một class được khai báo là final thì không lớp nào có thể kế thừa nó và nó chỉ có thể khởi tạo được thôi. Cú pháp: Khai báo final class.
VD: khai báo final class ConNguoi.
VD: final class không thể kế thừa.
Final Phương thức-Khi chúng ta khai báo một phương thức là final thì không có một phương thức nào có thể override(ghi đè lại được). Cú pháp: khai báo một phương thức final.
VD: khai báo lớp con người có phương thức getSoChan() là final.
VD: không thể override lại phương thức final.
3, Lời kết.-Như vậy trong phần này mình đã giới thiệu xong đến mọi người về static và final trong lập trình hướng đối tượng nói chung và trong PHP
nói riêng, tuy nhiên |