2012-05-28 37 views
25

Tôi chỉ thấy việc sử dụng dấu gạch chéo ngược trong tham chiếu đến đối tượng PHP và tò mò về nó (tôi chưa bao giờ thấy điều này trước đây). Nó có nghĩa là gì?Dấu gạch chéo ngược trong PHP - ý nghĩa của nó là gì?

$mail = new SendGrid\Mail(); 

Nếu bạn tò mò, đây là SendGrid's documentation.

+1

Đây là một bản sao của http://stackoverflow.com/questions/4075521/backslash-syntax-when-creating-objects, vì vậy bạn có thể tìm thấy câu trả lời của bạn ở đó. – 11684

+0

@ 11684 yea chỉ thấy rằng ... oops – Kyle

+0

Bài đăng tuyệt vời này giải thích chi tiết hơn http://stackoverflow.com/q/4790020/6521116 –

Trả lời

26

Đó là vì họ đang sử dụng PHP namespaces. Không gian tên là mới như của PHP 5.3.

+0

cần được cập nhật, hiện tại, nhiều dự án sử dụng. –

13

Đó là toán tử không gian tên của PHP: http://php.net/manual/en/language.namespaces.php.

Đừng hỏi tại sao đó là dấu gạch chéo ngược. Đó là (imho) sự lựa chọn ngu ngốc nhất mà họ có thể đã thực hiện, dựa trên quyết định của họ về một hệ thống tính điểm cao/nghiêng lớn có ý nghĩa chỉ với các nhà phát triển.

+2

Vâng, dấu gạch chéo ngược là lựa chọn tốt nhất có sẵn (bạn có muốn sử dụng ':::' hoặc '-> ->'?). – xfix

+0

@GlitchMr Tại sao không phải '->' cũng giống như các đối tượng thông thường ... – jadkik94

+0

Điều đó cũng có thể hoạt động, nhưng '-> Hello-> cái gì đó()' sẽ trông xấu xí. Và tôi không nghĩ rằng PHP muốn có nhà điều hành có nghĩa là hai điều cùng một lúc (đặc biệt là rất khác nhau, khi tôi sẽ thấy 'Abc-> def()' lần đầu tiên tôi sẽ nghĩ đó là phương pháp của hằng số 'Abc'). – xfix

6

Đây là cú pháp cho không gian tên. Bạn có thể đọc thêm về không gian tên tại PHP documentation. Họ yêu cầu ít nhất là PHP 5.3.

Ví dụ:

namespace SendGrid; 
function Mail() { 
    // You can access this function by using SendGrid\Mail() externally 
} 
Các vấn đề liên quan