2011-01-13 26 views
9

Tại sao tôi nên khai báo thuộc tính lớp (biến) hoặc phương pháp (hàm) bằng cách sử dụng từ khóa public, nếu chúng được công khai theo mặc định? Hoặc là họ?Lớp học PHP tại sao sử dụng từ khóa công khai?

Để cụm từ câu hỏi của tôi theo cách khác, là public không cần thiết? Tôi hiểu số privateprotected, nhưng tại sao lại khai báo public nếu các thành viên của lớp được công khai?

Trả lời

7

Có, public là mặc định (xem visibility docs).

Mọi người thêm nó, vì vậy nó phù hợp với tất cả các phương pháp/thuộc tính khác.

Ngoài ra, nếu bạn muốn khai báo thuộc tính công khai và không muốn sử dụng public, bạn sẽ cần sử dụng var, không được khuyến nghị và có thể sẽ không được dùng nữa tại một số thời điểm.

+0

Đối với các thuộc tính, ok. Nhưng ai thực sự cần tài sản công cộng ngày nay? Đối với các phương pháp công khai, đó là vấn đề về quy ước (ví dụ: PSR-2), điều này rất tốt cho tính quen thuộc và khả năng tương tác. Nhưng không có lợi ích kỹ thuật. Và, tôi sẽ tranh luận, nó không cải thiện khả năng đọc, nếu bộ não của bạn chưa được sử dụng để xem từ khóa công khai. – donquixote

2

Chắc chắn nó không cần thiết vì đó là mức hiển thị mặc định. Bạn nên tránh chúng khi bạn có thể. Một số người thêm từ khóa public một cách rõ ràng để mã có thể dễ đọc hơn.

+1

tránh những gì (ai) khi tôi có thể? – Ben

+1

@Steve: Ý tôi là bạn có thể bỏ qua việc gõ từ khóa 'public' cho các vars cấp công khai :) – Sarfraz

+1

@Steve Từ khóa' public'. – Savetheinternet

3

Kể từ php 5.3 (tôi nghĩ, đã lâu rồi), sử dụng từ khóa var làm tăng các lỗi E_STRICT, vì vậy công chúng phải được sử dụng để khai báo các đối tượng va chạm. Đối với các chức năng, tôi tin rằng đó là một điều nhất quán.

+0

Không, nó đã tăng E_STRICT từ 5.0 đến 5.13 (theo tài liệu). Nhưng họ đã bỏ thông báo. – NikiC

+0

Oh thực sự? Cảm ơn cho những người đứng đầu lên. Tôi chưa bao giờ nhận ra nó đã bị thay đổi trở lại – Travis

Các vấn đề liên quan