PHP को उम्मीद है कि T_PAAMAYIM_NEKUDOTAYIM?


542

क्या किसी के पास है T_PAAMAYIM_NEKUDOTAYIM?


22
कभी-कभी यह PHP का तरीका होता है जो आपको बताता है कि आपको $ चिन्ह याद आ रहा है ... उदाहरण के लिए यदि आप $ _SESSION ["फू"] के बजाय _SIONION ["फू" लिखते हैं
गोंजो

131
डबल डबल बृहदान्त्र के लिए हेबर , लेकिन ... बग्स। php.net/bug.php?id=14492 देखें : "BTW, पार्स त्रुटि में एक वर्तनी की गलती है, यह T_PAAMAYIM_NEKTATAYIM ('डबल' में होना चाहिए) फ़ॉर्म सिर्फ मूल संज्ञा है + 'एइम' प्रत्यय और 'नेकुडा' एकल रूप है ['नेकुडॉट' बहुवचन रूप है)] "।
वोल्फगैंग फाहल

66
@WolfgangFahl मुझे पता है कि त्रुटि के बारे में कुछ गलत था।
पीटर टर्नर

14
@WolfgangFahl वर्तनी की गलती केवल गायब है u। यह होना चाहिए T_PAAMAYIM_NEKUDOTAYIM। ( PAAMAYIM= "दो बार", NEKUDOTAYIM= := "נקותותיי)")
टॉम

15
जब मैंने इस त्रुटि को देखा तो मैंने कुछ 30 सेकंड के लिए स्क्रीन को डम्बलस्ट्रक में देखा, फिर हँसते हुए फट गया और सिगरेट पीने के लिए चला गया: F 1+
n00b

जवाबों:


342

यह डबल कोलन ऑपरेटर है ::( पार्सर टोकन की सूची देखें )।


11
ज़रुरी नहीं। इसका परीक्षण करेंvar_dump(empty(TRUE))
machineaddict

1
@machineaddict गलत सवाल / जवाब?
गम्बू

2
नहीं। मैंने अभी एक मूल्यांकन जोड़ा है जो समान T_PAAMAYIM_NEKUDOTAYIM लौटाता है। मैंने इसे गलती से पाया।
मशीनीडिट

6
@Web_Developer, ऐसा होने का कारण यह है क्योंकि यदि आपके पास वाक्यविन्यास रूप से मान्य कथन के foreach($cats as catबाद एकमात्र स्वीकार्य चरित्र catहै ::, तो यह आपको कुछ वर्ग की एक स्थिर संपत्ति को निर्दिष्ट करने की अनुमति देगा cat। जैसे, यदि catकक्षा में सार्वजनिक स्थैतिक सदस्य को बुलाया जाता है $mouse, तो foreach($cats as cat::$mouse)पूरी तरह से मान्य है php, लेकिन वाक्यविन्यास त्रुटि के ::बाद के अलावा किसी भी अन्य चीज के साथ एक बयान cat। यदि आप $mouseकी घोषित संपत्ति नहीं थी, catतो आपको एक घातक त्रुटि मिलेगी, लेकिन फिर भी वाक्यविन्यास त्रुटि नहीं होगी।
मिर्ची

2
var_dump (खाली (TRUE)), PHP 7.2 में बस बूल (झूठा)
लौटाएं

110

Google अद्भुत काम करता है।

यह "डबल कोलन" के लिए हिब्रू है


3
@MattiVirkkunen एक नई भाषा के बारे में जो किसी भी भाषा में कोई त्रुटि, कमिट, सिंटैक्स स्वीकार करती है? :) हम कर सकते है।
हेक्टर

2
Google मुझे यहां लाया।
सुमित

2
israelis ने php :)
sd1sd1

@ sd1sd1, हाँ, यह शायद ज़ीव ने लिखा है कि
पीटरचूला

53

यह ::PHP में ऑपरेटर के लिए एक नाम है । इसका शाब्दिक अर्थ है "डबल कोलन"। किसी कारण से उन्होंने इसका नाम हिब्रू में रखा। अपने कोड सिंटैक्स की जाँच करें, और ::जहाँ उपयुक्त हो :-)


1
कार्य अंग्रेजी में हैं, लेकिन यह त्रुटि हिब्रू में है। मुझे यकीन नहीं है कि कोई अन्य त्रुटियाँ हिब्रू में हैं।
एलेक्स

19
हाइलाइट स्ट्रिंग להדגיש מ stringרו .ת है। अब से, मैं केवल हिब्रू अक्षरों में अपने कस्टम array_push फ़ंक्शन לףומ_מערך का उपयोग करूँगा, ज़ाहिर है। मुझे यकीन है कि मेरे गैर-हिब्रू बोलने वाले सभी सहकर्मी इसे पसंद करेंगे। बस हमारी देव टीम के बारे में सभी गैर-लैटिन अक्षरों में लिखी गई कम से कम एक भाषा बोलते हैं। मजेदार होना चाहिए :)
इसहाक

3
इसका कारण हिब्रू में है क्योंकि कोड इजरायल द्वारा लिखा गया था। मुझे नहीं लगता कि वे उस त्रुटि से चूक गए थे, उन्होंने इसे एक अनुस्मारक के रूप में अनियंत्रित छोड़ दिया।
राउल

5
@ राउल ओके, तो मेरी अगली परियोजना पर मैं इतालवी में कुछ त्रुटि कोड लिखूँगा, मैं इतालवी हूँ! आप हर जगह, अंग्रेजी में क्या उम्मीद करते हैं? :-)
गियानलुका घेटिनी

@ इलिया बर्मन इसका शाब्दिक अर्थ "डबल कोलन" नहीं है; यह शाब्दिक अर्थ है "दो बार, डबल डॉट्स"
Sapphire_Brick

47

से विकिपीडिया :

PHP में, स्कोप रिज़ॉल्यूशन ऑपरेटर को पैमायम नेकुडोटायम (हिब्रू: מעמייד נקוםתיים) भी कहा जाता है, जिसका अर्थ है हिब्रू में "डबल कोलन"।

नाम "पैमायम नेकुदोतीम" को इजरायल द्वारा विकसित Zend Engine 0.5 में PHP 3 में इस्तेमाल किया गया था। हालांकि, यह कई डेवलपर्स को भ्रमित कर रहा है जो हिब्रू नहीं बोलते हैं, यह अभी भी PHP 5 में उपयोग किया जा रहा है, जैसा कि इस नमूना त्रुटि संदेश में है :

$ php -r :: पार्स त्रुटि: सिंटैक्स त्रुटि, अप्रत्याशित T_PAAMAYIM_NEKUDOTAYIM

PHP 5.4 के अनुसार, गुंजाइश रिज़ॉल्यूशन ऑपरेटर के विषय में त्रुटि संदेश अभी भी इस नाम को शामिल करते हैं, लेकिन इसका अर्थ कुछ हद तक स्पष्ट किया है:

$ php -r :: पार्स त्रुटि: सिंटैक्स त्रुटि, अप्रत्याशित '::' (T_PAAMAYIM_NEKUDOTAYIM)

से सरकारी पीएचपी प्रलेखन :

स्कोप रिज़ॉल्यूशन ऑपरेटर (जिसे पैमायम नेकुडोटायम भी कहा जाता है) या सरल शब्दों में, डबल कोलन, एक टोकन है जो एक वर्ग के स्थिर, निरंतर और अतिप्राप्त गुणों या तरीकों तक पहुंच की अनुमति देता है।

वर्ग परिभाषा के बाहर से इन वस्तुओं को संदर्भित करते समय, कक्षा के नाम का उपयोग करें।

PHP 5.3.0 के रूप में, एक चर का उपयोग करके वर्ग को संदर्भित करना संभव है। चर का मान कोई कीवर्ड नहीं हो सकता (उदाहरण के लिए स्व, माता-पिता और स्थैतिक)।

पैमायम नेकुदोतिमे, पहली बार में, दोहरे-कॉलन के नामकरण के लिए एक अजीब पसंद की तरह प्रतीत होता है। हालाँकि, Zend Engine 0.5 (जो शक्तियां PHP 3) को लिखते हैं, वही Zend टीम ने इसे कॉल करने का निर्णय लिया है। यह वास्तव में हिब्रू में डबल-कोलोन का मतलब है!


1
यह वास्तव में बोलचाल का हिब्रू है। विकिपीडिया अब कहता है: "PHP में, स्कोप रिज़ॉल्यूशन ऑपरेटर को पैमायम नेकुडोटायम (हिब्रू: םעמייפ נקודותיים) भी कहा जाता है, [paʔaˈmajim əkudoˈtajim], दूसरा शब्द נקנדתי Inיי Inיי In को "हिब्रू में।"
mic

11

यह तब भी आ रहा है जब आप PHP में खाली () फ़ंक्शन में एक स्थिरांक लागू करते हैं:

if (!empty(SOME_CONSTANT)) {

}

यह मेरा मामला था। मैंने इसका उपयोग करके इसे हल किया:

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

}

2
एक स्थिरांक खाली क्यों होगा?
आतंक न करें

1
अच्छा प्रश्न: यह सिर्फ उदाहरण के लिए है अगर इस त्रुटि की स्थिति में कुछ और मिला है, तो मैं यह दिखाता हूं कि यह भी संभव होगा :)
अधिकतम

6
@ आतंक न करें: क्यों नहीं? रिक्त () न केवल परीक्षण करता है यदि कोई चर मौजूद है, बल्कि यह भी कि "मान" खाली है (PHP के मामले में शून्य (0) भी खाली है)। ऐसा स्थिरांक एक मान का प्रतिनिधित्व कर सकता है, जिसे उपयोगकर्ता द्वारा परिवर्तित किया जाना है - जैसे डीबी सेटिंग्स या कुछ सच्चे / झूठे मूल्य और अन्य मूल्य प्रकार जो कोड डेवलपर को डिज़ाइन-टाइम पर नहीं पता है। यह एपीआई या कोड फ्रेमवर्क के लिए सामान्य है। मुझे अभी समझ में नहीं आया कि Zend parser के डेवलपर्स ने एक सामान्य शब्द का उपयोग क्यों नहीं किया, जिसे हर कोई जानता है और समझता है, लेकिन इसके बजाय कुछ शब्द। मेरा मतलब है, यह वास्तव में मजाकिया भी नहीं है।
स्टेन

मैं कॉन्फिग फाइलों में कॉन्स्टेंट का उपयोग करता हूं, और मैं कोड में जानना चाहता हूं कि क्या कोई विशिष्ट स्थिरांक खाली है (अशक्त, गलत, 0, खाली स्ट्रिंग, एम्टी सरणी ....)। क्या मुझे उन सभी के खिलाफ मैन्युअल रूप से परीक्षण करना चाहिए? डब्ल्यूटीएफ
क्यूदेव

5

मैं हिब्रू को बहुत अच्छी तरह से जानता हूं, इसलिए आपके लिए "पैमायम नेकुदोटयिम" नाम को स्पष्ट करने के लिए, जिसका अर्थ है "दोहरा कोलन", लेकिन इसका शाब्दिक अनुवाद है:

  • "पयामयिम" का अर्थ है "दो" या "दो बार"
  • "नेकुडोटायम" का अर्थ है "डॉट्स" (लिट्ल "होल")
    • हिब्रू भाषा में, एक नेकुडा का मतलब एक बिंदी होता है।
    • बहुवचन नेकुडॉट है , अर्थात, जो कि स्वर की तरह कार्य करते हैं, अंग्रेजी में करते हैं।
    • इसका कारण यह है कि इसे नेकुडो- तायिम कहा जाता है क्योंकि प्रत्यय "-यिम" का अर्थ "दो" या "दो बार" भी होता है, लेकिन इसका आमतौर पर दो कार्यों के बजाय दो वस्तुओं का मतलब होता है, इस प्रकार ::"दो बार, दो बिंदु" या अधिक का अर्थ होता है आमतौर पर स्कोप रिज़ॉल्यूशन ऑपरेटर के रूप में जाना जाता है ।

2

इसका उपयोग करते समय फॉरेक्स पर हो सकता है:

foreach( $array as $key = $value )

के बजाय

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

1

मेरे लिए यह एक क्लास फंक्शन के भीतर हुआ।

PHP 5.3 और इसके बाद के संस्करण में $this::$defaultsठीक काम किया; जब मैंने कोड को एक सर्वर में स्वैप किया जो कि किसी भी कारण से कम संस्करण संख्या में था, तो उसने यह त्रुटि फेंक दी।

मेरे मामले में, समाधान selfइसके बजाय कीवर्ड का उपयोग करना था $this:

self::$defaults ठीक काम करता है।


वह था पूछने के बारे में $this, या क्या हुआ आप ?
Sapphire_Brick
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.