PHP T_PAAMAYIM_NEKUDOTAYIM bekliyor?


542

Herkesin var mı T_PAAMAYIM_NEKUDOTAYIM?


22
Bazen bu PHP'nin bir $ işareti eksik olduğunu söylemenin bir yoludur ... örneğin $ _SESSION ["foo"] yerine _SESSION ["foo"] yazarsanız
Gonzo

131
çift ​​çift kolon için İbranice, ama ... bkz. bugs.php.net/bug.php?id=14492 : "BTW, ayrıştırma hatası yazım hatası var, bu T_PAAMAYIM_NEKUDATAYIM (İbranice, 'çift' olmalıdır biçim sadece orijinal isim + 'ayim' son ekidir ve 'nekuda' tek biçimdir ['nekudot' çoğul biçimdir]). "
Wolfgang Fahl

66
@WolfgangFahl Bu hata hakkında bir şeylerin yanlış olduğunu biliyordum.
Peter Turner

14
@ WolfgangFahl yazım hatası sadece eksik u. Olmalı T_PAAMAYIM_NEKUDOTAYIM. ( PAAMAYIM= "iki kez", NEKUDOTAYIM= := "םיים")
Tom

15
Ben bu hatayı gördüğümde ben sadece 30 saniye için ekranda dumbstruck baktı sonra gülüyor patlama ve bir ciggarette duman gitti: F 1+
n00b 17:03

Yanıtlar:


342

Bu çift kolonlu operatördür ::( ayrıştırıcı belirteçleri listesine bakınız ).


11
Pek sayılmaz. Bunu test etvar_dump(empty(TRUE))
machineaddict

1
@machineaddict Yanlış soru / cevap?
Gumbo

2
Hayır. Az önce aynı T_PAAMAYIM_NEKUDOTAYIM döndüren bir değerlendirme ekledim. Yanlışlıkla buldum.
machineaddict

6
@Web_Developer, bunun nedeni, sözdizimsel olarak geçerli bir ifadeden foreach($cats as catsonra tek kabul edilebilir bir karaktere sahipseniz, denilen bazı sınıfların statik bir özelliğini belirtmenize izin vereceği için a olmasıdır . Eğer Örneğin, sınıf denilen bir kamu statik üyesi olan , daha sonra tamamen geçerli olduğunu , ancak başka bir ürünle birlikte bir açıklama sonra bir sözdizimi hatası olacaktır. Eğer değildi bir bildirilen özelliği size hala bir sözdizimi hatası değil ölümcül bir hata alıyorum ama istiyorum. cat::catcat$mouseforeach($cats as cat::$mouse)php::cat$mousecat
chiliNUT

2
var_dump (boş (TRUE)), PHP 7.2'de bool (false)
döndür

110

Google harikalar yaratıyor.

Bu var İbranice "çift kolon" için.


3
@MattiVirkkunenHerhangi bir dilde herhangi bir hatayı, sözdizimini, sözdizimini kabul eden yeni bir dile ne dersiniz? :) yapabiliriz.
Hector

2
Google beni buraya getirdi.
Sumit

2
israelis php yazdı :)
sd1sd1

@ sd1sd1, evet, muhtemelen bunu yazan Zeev
peterchaula

53

::PHP'deki operatör için bir isim . Kelimenin tam anlamıyla "çift kolon" anlamına gelir. Nedense İbranice isimlendirdiler. Kod sözdizimini kontrol edin ve ::uygun bir yere koyun :-)


1
İşlevler İngilizcedir, ancak bu hata İbranice'dir. Başka hataların İbranice olup olmadığından emin değilim.
alex

19
Vurgulama dizesi להדגיש מחרוזת. Şu andan itibaren, sadece İbranice karakterlerde sadece özel array_push işlevimi לדחוף_מערך kullanacağım. İbranice olmayan tüm arkadaşlarımın bunu seveceğinden eminim. Geliştirme ekibimizin neredeyse tamamı, latin olmayan karakterlerle yazılmış en az bir dil konuşuyor. Eğlenceli olmalı :)
Isaac

3
İbranice olmasının nedeni, kodun İsrailliler tarafından yazılmış olmasıdır. Bu hatayı kaçırdıklarını sanmıyorum, orada hatırlatma olarak tercüme edilmediler.
Raul

5
@Raul Tamam, bir sonraki projemde İtalyanca bazı hata kodları yazacağım, İtalyanım! Ne bekliyorsun, her yerde ingilizce? :-)
Gianluca Ghettini

@Ilya Birman Kelimenin tam anlamıyla "çift kolon" anlamına gelmez; kelimenin tam anlamıyla "iki kez, çift nokta" anlamına gelir
Sapphire_Brick

47

Gönderen Vikipedi :

PHP'de, kapsam çözümleme işlecine İbranice'de “çift kolon” ​​anlamına gelen Paamayim Nekudotayim (İbranice: פעמיים נקודתיים) denir.

"Paamayim Nekudotayim" ismi, PHP 3'te kullanılan İsrail tarafından geliştirilen Zend Engine 0.5'de tanıtıldı. :

$ php -r :: Ayrıştırma hatası: sözdizimi hatası, beklenmeyen T_PAAMAYIM_NEKUDOTAYIM

PHP 5.4'ten itibaren, kapsam çözümleme işleciyle ilgili hata iletileri hala bu adı içerir, ancak anlamını biraz açıklığa kavuşturmuştur:

$ php -r :: Ayrıştırma hatası: sözdizimi hatası, beklenmedik '::' (T_PAAMAYIM_NEKUDOTAYIM)

Gönderen Resmi PHP belgelerine :

Kapsam Çözümleme İşleci (Paamayim Nekudotayim olarak da bilinir) veya daha basit bir ifadeyle, çift kolon, bir sınıfın statik, sabit ve geçersiz kılınan özelliklerine veya yöntemlerine erişime izin veren bir simgedir.

Bu öğelere sınıf tanımının dışından başvuru yaparken sınıfın adını kullanın.

PHP 5.3.0'dan itibaren, bir değişken kullanarak sınıfa başvurmak mümkündür. Değişkenin değeri bir anahtar kelime olamaz (ör. Öz, üst ve statik).

Paamayim Nekudotayim, ilk başta, çift kolonlu bir isim vermek için garip bir seçim gibi görünecektir. Ancak, Zend Engine 0.5'i yazarken (ki bu PHP 3'e güç verir), Zend ekibi buna karar verdi. Aslında çift kolon anlamına geliyor - İbranice!


1
Aslında konuşma dili İbranice. Wikipedia şimdi şöyle diyor: "PHP'de, kapsam çözümleme işleci Paamayim Nekudotayim (İbranice: פעמיים נקודותיים, [pa [aˈmajim nəkudoˈtajim] olarak telaffuz edilir), yani" çift kolon ”İbranice.
mic

11

Boş () işlevine PHP'de bir sabit uyguladığınızda da bu gelir:

if (!empty(SOME_CONSTANT)) {

}

Benim durumum buydu. Bunu kullanarak çözdüm:

$string = SOME_CONSTANT;
if (!empty($string)) {

}

2
Bir sabit neden boş olsun ki?
Panik Yapmayın

1
Güzel Soru: Bu sadece örneğin başka biri bu hata durumunda var, ben de mümkün olacağını göstermek :)
Max

6
@ Panik yapma: Neden olmasın? empty () yalnızca bir değişken olup olmadığını sınamakla kalmaz, aynı zamanda değeri "boş" ise (PHP olması durumunda sıfır (0) da boştur). Böyle bir sabit, kullanıcı tarafından DB ayarları veya bazı doğru / yanlış değerler ve kod geliştiricinin tasarım zamanında bilmediği diğer değer türleri gibi değiştirilmesi gereken bir değeri temsil edebilir. Bu, API'ler veya kod çerçeveleri için yaygındır. Zend ayrıştırıcısının geliştiricilerinin neden herkesin bildiği ve anladığı ortak bir kelime kullanmadığını, bunun yerine bazı İbranice kelimeleri kullanmadığını anlamıyorum. Yani, gerçekten komik ya da öyle değil.
StanE

Ben yapılandırma dosyalarında sabitleri kullanmak ve belirli bir sabit boş (null, false, 0, boş dize, emty dizi ....) kodda bilmek istiyorum. Hepsini manuel olarak test etmeli miyim? WTF
qdev

5

İbranice'yi çok iyi biliyorum, bu yüzden sizin için "Paamayim Nekudotayim" adını açıklığa kavuşturmak için, açıklanan anlam "çift kolon" dur, ancak tam anlamıyla tercüme edilmiştir:

  • "Paamayim", "iki" veya "iki kez" anlamına gelir
  • "Nekudotayim", "noktalar" anlamına gelir (yanan "delikler")
    • İbranice bir nekuda nokta anlamına gelir.
    • Çoğul nekudot , yani ünlüler gibi hareket eden noktalar İngilizce'dir.
    • Nekudo- tayim olarak adlandırılmasının nedeni, "-ayim" sonekinin "iki" veya "iki kez" anlamına gelmesidir, ancak genellikle iki işlem yerine iki nesne anlamına gelir, dolayısıyla ::"iki kez, iki nokta" veya daha fazlasını ifade eder genellikle Kapsam Çözümleme İşleci olarak bilinir .

2

Bu, kullanım sırasında her foreach'te gerçekleşebilir:

foreach( $array as $key = $value )

onun yerine

foreach( $array as $key => $value )

1

Benim için bu bir sınıf işlevi içinde oldu.

PHP 5.3 ve üstü $this::$defaultssürümlerde iyi çalıştı; ne olursa olsun daha düşük bir sürüm numarası vardı bir sunucuya kodu takas zaman bu hata attı.

Çözüm, benim durumumda, anahtar kelime selfkullanmaktı $this:

self::$defaults gayet iyi çalışıyor.


Diye mi sormak hakkında $this, ya da ne oldu sana ?
Sapphire_Brick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.