2012-10-20 11 views
5

हाल ही में मैं पढ़ रहा था php प्रलेखन वस्तु की विधि तक पहुंचना और उसे स्ट्रिंग अनुभाग में दिलचस्प टिप्पणी पाया: PHP 5 के बाद सेस्ट्रिंग के भीतर

कार्य, प्रणाली को बुलाती है, स्थैतिक कक्षा चर, और अंदर {$} काम वर्ग स्थिरांक हालांकि, उपयोग किए गए मान को उस चर के रूप में एक चर के नाम के रूप में व्याख्या किया जाएगा जिसमें स्ट्रिंग को परिभाषित किया गया है। एकल घुंघराले ब्रेसिज़ का उपयोग करना ({}) वापसी या या कार्यों के मूल्यों तरीकों वर्ग स्थिरांक या स्थिर वर्ग चरों के मान तक पहुँचने के लिए काम नहीं करेगा।

www.php.net/manual/en/language.types.string.php

इसे कहते हैं देखो, कि मैं वस्तु की विधि कॉल द्वारा दिए गए मान पाने के लिए घुंघराले सिंटैक्स का उपयोग नहीं कर सकते। यह मैनुअल में एक गलती है या मैं इसे गलत समझा, क्योंकि मैं निम्नलिखित कोड की कोशिश की और यह सिर्फ ठीक काम करता है:

<?php 
class HelloWorld 
{ 
    public static function hello() 
    { 
     echo 'hello'; 
    } 
} 
$a = new HelloWorld(); 

echo "{$a->hello()} world"; 
+0

एक उदाहरण विधि के रूप में एक स्थिर विधि कॉलिंग, और कुछ भी नहीं है कि विधि –

+0

से लौटे एक स्थिर विधि उपयोग 'उपयोग करने के लिए डॉलर प्रति :: हैलो()' – doublesharp

उत्तर

0

मैं क्या समझ से कि विवरण है, तनाव पर है

(

: ...) एकल घुंघराले ब्रेसिज़ ...

तो उदाहरण में वहाँ मैं यह कहना चाहता है का उपयोग करना

echo "I'd like an {$beers::$ale}\n"; इसलिए एकल घुंघराले ब्रेसिज़ काम नहीं करेगा।
और यही कारण है आप डबल घुंघराले ब्रेसिज़, जिनमें से पहले स्थिर उत्पादन और दूसरा जिनमें से उदाहरण के रूप में अंतिम आउटपुट वापस आ जाएगी वापस आ जाएगी का उपयोग करना चाहिए है:

echo "I'd like an {${beers::$ale}}\n"; 
       ^^   ^^ 
+0

मुझे लगता है कि समझ में करते हैं, लेकिन मुझे समझ नहीं आता क्यों वे विधि का उल्लेख किया स्थिरांक और स्थैतिक चर के साथ एक ही पंक्ति में वहाँ कॉल –

3

PHP DOC Says

वापसी या वर्ग स्थिरांक या स्थिर वर्ग चर

के कार्यों या तरीकों के मूल्यों मूल्यों तक पहुँचने के लिए काम नहीं करेगा 10

$a->hello() कैसे PHP में एक स्थिर विधि कॉल करने के लिए और भी नहीं एक स्थिरांक या स्थिर वर्ग चर यह है कि वे क्या मतलब है नहीं है:

class HelloWorld { 
    const A = "A";//    <---- You can not use it for this 
    public static $B = "B";   <---- or this 

    public static function hello() { 
     echo 'hello'; 
    } 
} 


$a = new HelloWorld(); 
$A = "{HelloWorld::A} world";  <-------- Not Work 
$B = "{HelloWorld::$B} world";  <-------- Not Work 
$C = "{HelloWorld::hello()} world"; <-------- Not Work 

यदि आप अब कोशिश

$A = "X"; // If you don't define this it would not work 
$B = "Y" ; //<------------- -^ 

echo "{${HelloWorld::A}} world"; 
echo "{${HelloWorld::$B}} world"; 

आउटपुट

X world   <--- returns X world instead of A 
Y world   <--- returns Y world instead of B 
संबंधित मुद्दे

 संबंधित मुद्दे