Có ai có một T_PAAMAYIM_NEKUDOTAYIM
?
u
. Nó phải T_PAAMAYIM_NEKUDOTAYIM
. ( PAAMAYIM
= "Hai lần", NEKUDOTAYIM
= :
= "נקודותיים")
Có ai có một T_PAAMAYIM_NEKUDOTAYIM
?
u
. Nó phải T_PAAMAYIM_NEKUDOTAYIM
. ( PAAMAYIM
= "Hai lần", NEKUDOTAYIM
= :
= "נקודותיים")
Câu trả lời:
Đó là toán tử dấu hai chấm ::
(xem danh sách mã thông báo trình phân tích cú pháp ).
var_dump(empty(TRUE))
foreach($cats as cat
ký tự duy nhất được chấp nhận sau cat
câu lệnh hợp lệ cú pháp là a ::
, vì nó sẽ cho phép bạn chỉ định một thuộc tính tĩnh của một số lớp được gọi cat
. Ví dụ, nếu cat
lớp có một thành viên tĩnh công khai được gọi $mouse
, thì foreach($cats as cat::$mouse)
hoàn toàn hợp lệ php
, nhưng một câu lệnh với bất cứ điều gì khác ::
sau cat
đó sẽ là một lỗi cú pháp. Nếu $mouse
không phải là một tài sản được khai báo của cat
bạn sẽ có một lỗi nghiêm trọng, nhưng vẫn không phải là một lỗi cú pháp.
Google làm việc kỳ diệu.
Đó là tiếng Do Thái có nghĩa là "dấu hai chấm".
Đó là một tên cho ::
toán tử trong PHP. Nó có nghĩa đen là "dấu hai chấm". Vì một số lý do, họ đặt tên theo tiếng Do Thái. Kiểm tra cú pháp mã của bạn và đặt một ::
nơi thích hợp :-)
Từ Wikipedia :
Trong PHP, toán tử phân giải phạm vi cũng được gọi là Paamayim Nekudotayim (tiếng Do Thái: tiếng פעמפעמ
Tên "Paamayim Nekudotayim" đã được giới thiệu trong Zend Engine 0.5 do Israel phát triển được sử dụng trong PHP 3. Mặc dù nó đã gây nhầm lẫn cho nhiều nhà phát triển không nói tiếng Do Thái, nhưng nó vẫn được sử dụng trong PHP 5, như trong thông báo lỗi mẫu này :
$ php -r :: Lỗi phân tích cú pháp: lỗi cú pháp, T_PAAMAYIM_NEKUDOTAYIM không mong muốn
Kể từ phiên bản PHP 5.4, các thông báo lỗi liên quan đến toán tử phân giải phạm vi vẫn bao gồm tên này, nhưng đã làm rõ phần nào ý nghĩa của nó:
$ php -r :: Lỗi phân tích cú pháp: lỗi cú pháp, không mong muốn '::' (T_PAAMAYIM_NEKUDOTAYIM)
Toán tử phân giải phạm vi (còn được gọi là Paamayim Nekudotayim) hoặc nói một cách đơn giản hơn, dấu hai chấm, là một mã thông báo cho phép truy cập vào các thuộc tính hoặc phương thức tĩnh, không đổi và bị ghi đè của một lớp.
Khi tham chiếu các mục này từ bên ngoài định nghĩa lớp, sử dụng tên của lớp.
Kể từ phiên bản PHP 5.3.0, có thể tham chiếu lớp bằng một biến. Giá trị của biến không thể là một từ khóa (ví dụ: self, Parent và static).
Paamayim Nekudotayim, thoạt đầu, có vẻ như là một lựa chọn kỳ lạ để đặt tên cho một dấu hai chấm. Tuy nhiên, trong khi viết Zend Engine 0.5 (hỗ trợ PHP 3), đó là điều mà nhóm Zend quyết định gọi nó. Nó thực sự có nghĩa là hai dấu hai chấm - trong tiếng Do Thái!
Điều này cũng đến khi bạn áp dụng một hằng trong PHP cho hàm rỗng ():
if (!empty(SOME_CONSTANT)) {
}
Đó là trường hợp của tôi. Tôi đã giải quyết nó bằng cách sử dụng điều này:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
Tôi biết tiếng Hê-bơ-rơ khá rõ, vì vậy để làm rõ tên "Paamayim Nekudotayim" cho bạn, ý nghĩa được diễn giải là "dấu hai chấm", nhưng được dịch theo nghĩa đen:
::
biểu thị "hai lần, hai dấu chấm" hoặc nhiều hơn thường được gọi là toán tử phân giải phạm vi .Đối với tôi điều này đã xảy ra trong một chức năng lớp.
Trong PHP 5.3 trở lên $this::$defaults
hoạt động tốt; Khi tôi đổi mã vào một máy chủ mà vì bất kỳ lý do gì có số phiên bản thấp hơn, nó đã gây ra lỗi này.
Giải pháp, trong trường hợp của tôi, là sử dụng từ khóa self
thay vì $this
:
self::$defaults
hoạt động tốt
$this
, hoặc những gì đã xảy ra với bạn ?