2012-03-15 30 views
12

Trong PHP, tôi đang sử dụng không gian tên ở cấp lớp. Tuy nhiên, Netbeans vẫn nói cho tôi không gian tên các chức năng toàn cầu của tôi. Ví dụ, nếu tôi gõTôi có nên đặt tên cho các hàm toàn cầu trong PHP không?

str_replace('stuff'); 

sau đó Netbeans sẽ đề nghị thay đổi nó để:

\str_replace('stuff'); 

Đây có phải là một đề nghị PHP, hoặc chỉ Netbeans là quá hăng hái? Tôi đã không thể tìm thấy bất cứ điều gì trong tài liệu PHP mà nói một trong hai cách.

Tôi không thể thấy nó gây ra bất kỳ sự cố nào trong mã. Tuy nhiên, nó cảm thấy sai lầm khi chỉ bỏ qua Netbeans mà không biết tại sao nó lại đề xuất nó ngay từ đầu. Nhưng cũng không cảm thấy đúng khi thay đổi thực hành mã hóa của tôi mà không biết đó là điều đúng đắn cần làm.

+0

Tôi không biết bất kỳ đề xuất chính thức nào như vậy. Nó có thể là một phần của quy ước mã hóa bạn đang sử dụng không? – Gordon

+0

Cách tôi thấy nó là nếu bạn đang sử dụng các không gian tên trong mã của bạn và gọi các hàm toàn cục từ bên trong các không gian tên khác, bạn nên (có thể phải) nhưng nếu bạn không sử dụng các không gian tên ở bất kỳ đâu thì không có điểm nào. – h00ligan

+0

@ h00ligan không có gì trong hướng dẫn sử dụng PHP nói như vậy và chắc chắn không cần thiết vì PHP sẽ dự phòng phạm vi toàn cầu trong các cuộc gọi hàm. – Gordon

Trả lời

5

Không có khuyến cáo như vậy trong

Cũng không phải là cần thiết để sử dụng các số nhận dạng toàn cầu kể từ PHP sẽ dự phòng để định nghĩa hàm toàn cầu khi không có chức năng của tên đó trong không gian tên hiện tại.

Với lý do đó, lý do duy nhất để thêm số nhận dạng là làm rõ hơn rằng bạn muốn sử dụng điều toàn cầu thực tế để ngăn chặn các thay đổi ngẫu nhiên trong hành vi mã khi ai đó thêm chức năng cùng tên vào không gian tên hiện tại .

Bạn có thể muốn hỏi trên Netbeans Mailing List để biết thêm chi tiết về lý do IDE của bạn đề xuất điều này.

1

Quá hăng hái chắc chắn, nhưng tôi không thể tái tạo được điều này là Netbeans 7.0.1, với Plugin PHP 1.17.1. Nó không phải là quy ước, dù sao, và tôi sẽ không xem đó là một thực hành tốt nhất cả.

+0

Lạ - Tôi chưa thay đổi bất kỳ giá trị mặc định nào. Thông báo chính xác là 'Sửa tên thành "\ str_replace"'. –

+0

Vì vậy, có vẻ như đó là vấn đề của các phiên bản sau này. Bởi vì tôi có NetBeans 8.1 - và ở đó, như người dùng @Blowski nói. –

0

Netbeans chỉ đơn giản là không tuân theo các quy tắc ghi nhận đối với việc giải quyết các không gian tên as documented:

  1. lớp toàn cầu (như DateTime) cần phải có đủ điều kiện khác, PHP sẽ tìm kiếm mà lớp trong không gian tên hiện tại.
  2. chức năng toàn cầu (như array_filter) và hằng số sẽ được tìm thấy trong không gian tên chung (không có trình độ rõ ràng) nếu chúng không tồn tại trong không gian tên hiện tại.

Nói cách khác, mã của bạn nên được xem là thành ngữ dựa trên các quy tắc được ghi nhận.

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