Hướng dẫn self vs static 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 Đã đăng vào thg 1 29, 2018 3:18 SA 3 phút đọc Đặt vấn đềChúng ta cùng tìm hiểu qua một số đoạn code ví dụ như dưới đây. Giả sử chúng ta có class Car như sau :
Ta có thể thấy method
Kết quả sẽ là :
Từ khóa self sẽ gọi hàm
Không phải đâu, kết quả thật sự vẫn sẽ là
SelfVậy chuyện gì đã xảy ra ở bên trên ? Chúng ta đã gọi phương thức Static và Late static bindingsBây giờ ở class Car ta thực hiện một thay đổi nho nhỏ. Thay vì dùng từ khóa
Và thực hiện lại lời gọi hàm
Đây chính là cái gọi là late static binding trong PHP. Khi sử dụng từ khoá Kết luậnQua bài viết nhỏ trên mình xin phân biệt sự khác nhau giữa "self" và "static" trong PHP. Mong nhận được sự góp ý, chỉnh sửa từ mọi người... All rights reserved |