PHP में, HEREDOC स्ट्रिंग घोषणाएं HTML के ब्लॉक को आउटपुट करने के लिए वास्तव में उपयोगी हैं। आप इसे केवल $ के साथ उपसर्ग करके चर में पार्स कर सकते हैं, लेकिन अधिक जटिल वाक्यविन्यास (जैसे $ var [2] [3]) के लिए, आपको अपनी अभिव्यक्ति {} ब्रेसिज़ के अंदर रखनी होगी।
PHP 5 में, यह है वास्तव में {} एक हियरडॉक स्ट्रिंग के अंदर ब्रेसिज़ के भीतर समारोह कॉल करने के लिए संभव है, लेकिन आप काम का एक सा के माध्यम से जाना है। फ़ंक्शन नाम स्वयं को एक चर में संग्रहीत किया जाना है, और आपको इसे कॉल करना होगा जैसे कि यह एक गतिशील रूप से नामित फ़ंक्शन है। उदाहरण के लिए:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
जैसा कि आप देख सकते हैं, यह सिर्फ की तुलना में थोड़ा अधिक गन्दा है:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
पहले कोड उदाहरण के अलावा अन्य तरीके भी हैं, जैसे कि फ़ंक्शन को कॉल करने के लिए HEREDOC से बाहर निकलना, या समस्या को उलटना और कुछ करना जैसे:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
उत्तरार्द्ध का नुकसान यह है कि आउटपुट सीधे आउटपुट स्ट्रीम में डाल दिया जाता है (जब तक कि मैं आउटपुट बफरिंग का उपयोग नहीं कर रहा हूं), जो कि वह नहीं हो सकता है जो मैं चाहता हूं।
तो, मेरे प्रश्न का सार यह है: क्या इस दृष्टिकोण का एक और अधिक सुंदर तरीका है?
प्रतिक्रियाओं के आधार पर संपादित करें: यह निश्चित रूप से ऐसा लगता है कि किसी तरह का टेम्पलेट इंजन मेरे जीवन को बहुत आसान बना देगा, लेकिन इसके लिए मुझे मूल रूप से अपने सामान्य PHP शैली को उलटने की आवश्यकता होगी। ऐसा नहीं है कि यह एक बुरी बात है, लेकिन यह मेरी जड़ता को समझाता है .. मैं जीवन को आसान बनाने के तरीकों के बारे में सोच रहा हूं, इसलिए अब मैं खाका देख रहा हूं।
Text {$string1} Text {$string2} Text
हेरेडोक में कुछ का उपयोग कर सकता हूं ।