ไม่มีใครมีT_PAAMAYIM_NEKUDOTAYIM
?
u
สะกดผิดเป็นเพียงหนึ่งที่หายไป T_PAAMAYIM_NEKUDOTAYIM
มันควรจะเป็น ( PAAMAYIM
= "สองครั้ง", NEKUDOTAYIM
= :
= "נקודותיים")
ไม่มีใครมีT_PAAMAYIM_NEKUDOTAYIM
?
u
สะกดผิดเป็นเพียงหนึ่งที่หายไป T_PAAMAYIM_NEKUDOTAYIM
มันควรจะเป็น ( PAAMAYIM
= "สองครั้ง", NEKUDOTAYIM
= :
= "נקודותיים")
คำตอบ:
เป็นตัวดำเนินการโคลอนคู่::
(ดูรายการ parser โทเค็น )
var_dump(empty(TRUE))
foreach($cats as cat
ตัวละครที่ได้รับการยอมรับเฉพาะหลังจากที่cat
เป็นคำสั่งที่ถูกต้องไวยากรณ์คือมันจะช่วยให้คุณสามารถระบุสถานที่ให้บริการแบบคงที่ของการเรียนบางคนเรียก::
cat
เช่นถ้าcat
คลาสมีสมาชิกแบบสแตติกสาธารณะที่เรียกว่า$mouse
แล้วforeach($cats as cat::$mouse)
จะถูกต้องสมบูรณ์php
แต่คำสั่งที่มีสิ่งอื่นนอกเหนือจาก::
หลังจากนั้นcat
จะเป็นข้อผิดพลาดทางไวยากรณ์ หาก$mouse
ไม่ใช่คุณสมบัติที่ประกาศของcat
คุณจะได้รับข้อผิดพลาดร้ายแรง แต่ก็ยังไม่ใช่ข้อผิดพลาดทางไวยากรณ์
Google ทำงานได้อย่างมหัศจรรย์
มันเป็นภาษาฮีบรูสำหรับ "โคลอนคู่"
มันเป็นชื่อสำหรับ::
ผู้ประกอบการใน PHP มันหมายถึง "ลำไส้ใหญ่สองครั้ง" อย่างแท้จริง ด้วยเหตุผลบางอย่างพวกเขาตั้งชื่อเป็นภาษาฮีบรู ตรวจสอบไวยากรณ์รหัสของคุณและวางใน::
ตำแหน่งที่เหมาะสม :-)
จากWikipedia :
ใน PHP ตัวดำเนินการแก้ปัญหาขอบเขตเรียกอีกอย่างว่า Paamayim Nekudotayim (อิสราเอล: פעמייםנקודתיים) ซึ่งแปลว่า "ทวิภาคคู่" ในภาษาฮิบรู
ชื่อ "Paamayim Nekudotayim" ถูกนำมาใช้ใน Zend Engine 0.5 ที่พัฒนาโดยอิสราเอลใน PHP 3 แม้ว่ามันจะสร้างความสับสนให้กับนักพัฒนาหลายคนที่ไม่พูดภาษาฮิบรู แต่มันก็ยังถูกใช้ใน PHP 5 เช่นเดียวกับในข้อความแสดงข้อผิดพลาดตัวอย่างนี้ :
$ php -r :: ข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์ T_PAAMAYIM_NEKUDOTAYIM ที่ไม่คาดคิด
ในฐานะของ PHP 5.4 ข้อความแสดงข้อผิดพลาดเกี่ยวกับตัวดำเนินการแก้ไขขอบเขตยังคงมีชื่อนี้อยู่ แต่ได้ชี้แจงความหมายของมันค่อนข้าง:
$ php -r :: ข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์, '::' (T_PAAMAYIM_NEKUDOTAYIM ที่ไม่คาดคิด)
จากเอกสาร PHP อย่างเป็นทางการ :
ตัวดำเนินการแก้ปัญหาขอบเขต (หรือเรียกอีกอย่างว่า Paamayim Nekudotayim) หรือในแง่ที่ง่ายกว่าคือโคลอนคู่เป็นโทเค็นที่อนุญาตให้เข้าถึงคุณสมบัติหรือเมธอดแบบคงที่ค่าคงที่และแทนที่ของคลาส
เมื่ออ้างอิงรายการเหล่านี้จากภายนอกคำจำกัดความของคลาสให้ใช้ชื่อของคลาส
ตั้งแต่ PHP 5.3.0 เป็นไปได้ที่จะอ้างอิงคลาสโดยใช้ตัวแปร ค่าของตัวแปรไม่สามารถเป็นคำหลัก (เช่นตนเองผู้ปกครองและคงที่)
Paamayim Nekudotayim ในตอนแรกดูเหมือนจะเป็นทางเลือกที่แปลกสำหรับการตั้งชื่อลำไส้ใหญ่สองครั้ง อย่างไรก็ตามในขณะที่เขียน Zend Engine 0.5 (ซึ่งใช้งาน PHP 3) นั่นคือสิ่งที่ทีม Zend ตัดสินใจเรียกใช้ จริง ๆ แล้วมันหมายถึงสองลำไส้ใหญ่ - ในภาษาฮิบรู
สิ่งนี้จะเกิดขึ้นเมื่อคุณใช้ค่าคงที่ใน PHP กับฟังก์ชั่น empty ():
if (!empty(SOME_CONSTANT)) {
}
นั่นคือกรณีของฉัน ฉันแก้ไขมันโดยใช้สิ่งนี้:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
ฉันรู้ว่าชาวฮีบรูค่อนข้างดีดังนั้นเพื่ออธิบายชื่อ "Paamayim Nekudotayim" ให้คุณฟังความหมายที่ถูกถอดความคือ "ทวิภาคคู่" แต่แปลตามตัวอักษร:
::
ระบุ "สองครั้งสองจุด" หรือมากกว่า เป็นที่รู้จักกันทั่วไปว่าเป็นขอบเขตความละเอียดประกอบการสิ่งนี้สามารถเกิดขึ้นได้ใน foreachs เมื่อใช้:
foreach( $array as $key = $value )
แทน
foreach( $array as $key => $value )
สำหรับฉันสิ่งนี้เกิดขึ้นในฟังก์ชั่นการเรียน
ใน PHP 5.3 ขึ้นไป $this::$defaults
ทำงานได้ดี; เมื่อฉันเปลี่ยนรหัสเป็นเซิร์ฟเวอร์ที่ด้วยเหตุผลใดก็ตามที่มีหมายเลขรุ่นต่ำกว่ามันก็โยนข้อผิดพลาดนี้
ในกรณีของฉันการแก้ปัญหาคือการใช้คำหลักself
แทน$this
:
self::$defaults
ทำงานได้ดี
$this
หรือสิ่งที่เกิดขึ้นกับคุณ ?