2011-03-09 16 views
5

मैं PHP में <<<HTML का उपयोग करते समय परिभाषित चर का उपयोग करने का तरीका जानने का प्रयास कर रहा हूं।अंदर परिभाषित चर का उपयोग <<< PHP में HTML

<?php 
define('TEST','This is a test'); 
echo <<<HTML 
Defined: {TEST} 
HTML; 
?> 

परिभाषित <<<HTML अंदर "टेस्ट" होने का उचित तरीका क्या है: यह मैं क्या हासिल करना चाहते का एक उदाहरण है?

संपादित करें:
मैंने यह जांचने के लिए एक छोटा परीक्षण किया कि कौन सी विधियां सबसे तेज़ हैं। मेरे परीक्षण के लिए मैंने हेरेडोक के अंदर 20 चर का उपयोग किया। यहां विभिन्न विधियों (सेकेंड में) के साथ क्या हुआ है:
Accessing defined variable inside <<<HTML in php ऐसा करने का सबसे धीमा तरीका प्रतीत होता है - 0.00216103।
Accessing defined variable inside <<<HTML in php तेज है - 0.00073290।
Accessing defined variable inside <<<HTML in php भी तेज़ है - 0.000525 9 5।
Accessing defined variable inside <<<HTML in php सबसे तेज़ - 0.00011110 है।

आशा इस मदद करता है किसी और :)

उत्तर

10

यह बहुत मुझे डर लग रहा नहीं है, लेकिन ... के रूप में मुझे पता है, कम से कम, एक हूँ

define('TEST','This is a test'); 

var $defined = TEST; 

echo <<<HTML 
Defined: {$defined} 
HTML; 

वहाँ नहीं, अब तक है उस संदर्भ में सीधे परिभाषित मानों का उपयोग करने का तरीका, आपको एक चर का उपयोग करने की आवश्यकता है।

+0

यही वह है जो मैं भी करता हूं। अगर कोई और तरीका है तो मैं उत्सुक था। – tftd

+2

वोट प्राप्त करता है - पूरी तरह से क्योंकि इसका अधिकार है। हेरेडोक सिंटैक्स केवल चर का मूल्यांकन कर सकता है - आपको इसे अपनी स्ट्रिंग में डालने के लिए एक चर के लिए निरंतर असाइन करना होगा। शायद एक वैकल्पिक स्ट्रिंग बिल्डिंग तकनीक को देखो? –

+0

मैं परिभाषित की बजाय सामान्य चर का उपयोग करता हूं। मैं बस सोच रहा था कि क्या चीजों ने PHP में बेहतर प्रदर्शन किया है, लेकिन स्पष्ट रूप से मुझे लंबे समय तक चर का उपयोग करना होगा :) – tftd

3

आप नहीं कर सकते। अपने मूल्य को वास्तविक चर में असाइन करें।

5

यहाँ एक विधि मैं php पुस्तिका पर नोट में पाया गया है: http://www.php.net/manual/en/function.define.php#100449

यह थोड़ा जटिल है, लेकिन यह काम करना चाहिए।

<?php 
define('TEST','This is a test'); 

$cst = 'cst'; 
function cst($constant){ 
    return $constant; 
} 

echo <<<HTML 
Defined: {$cst(TEST)} 
HTML; 

आप शामिल करने के लिए कई परिभाषित स्थिरांक है, इस मैन्युअल स्थिरांक के मूल्य के चर के बहुत सारे बताए से बेहतर होगा।

class DefineAccessor { 
    function __get($name) { 
     if (defined($name)) 
      return eval('return ' . $name . ';'); 
    } 
} 

यह का एक उदाहरण बना हियरडॉक में इसका इस्तेमाल करने में सक्षम हो:

$defines = new DefineAccessor; 

और फिर की तरह उपयोग

+0

वाह दोस्त ... यह कोड चट्टानों! कभी नहीं सोचा था कि आप इस तरह हेड्रोक के अंदर कार्यों का उपयोग कर सकते हैं! साझा करने के लिए धन्यवाद ! – tftd

+0

जैसा मैंने कहा, यह तरह का संकुचित है। क्रेडिट मैनुअल पर कोड निर्माता को क्रेडिट निर्माता पर जाना है। वहां पर गंभीर विशेषज्ञों के कुछ रत्न हैं। –

+0

यह मुझे eval लगता है। ^^ –

4

आप एक वर्ग है कि स्थिरांक को एक्सेसर तरह काम करता है बना सकते हैं यह:

echo <<<HTML 
Defined: $defines->TEST 
HTML; 
+0

यह एक सुंदर और पुनः उपयोग करने योग्य समाधान है, एक बमर की तरह हालांकि यह आवश्यक है। –

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