Heredoc Statement: Detailed Discussion with Easy Examples

Heredoc Statement: PHP में किसी String को Specify करने का ये तीसरा तरीका है। Heredoc को <<< Symbol द्वारा Represent किया जाता है और इसके तुरन्त बाद में एक Identifier Specify किया जाता है। फिर पूरी String को अगली Line से लिखना शुरू किया जाता है व सभी String Lines लिखने के बाद अन्त में फिर से एक New Line लिया जाता है और उस New Line में फिर से उसी Identifier को Specify करके Semicolon लगाया जाता है। यानी Heredoc String का Format निम्नानुसार होता हैः

<?php
ECHO <<< ThisIsHereDoc
This is simple string in multiple lines. 
This string will not be available for future use.

ThisIsHereDoc;

$str = <<< ThisIsHereDoc
This is simpel string in multiple lines. 
	and This string will be available 
		in the str Variable 
			for future use.
ThisIsHereDoc;

	PRINT $str;
?>

Heredoc Statement वास्तव में HTML के <pre> Element की तरह काम करता है। यानी Heredoc Statement के बीच Enclosed String Exactly उसी Format में Output में दिखाई देती है, जिस Format में हम उसे लिखते हैं। इसीलिए उपरोक्त Script का Output हमें निम्नानुसार दिखाई देता हैः

//Output  
This is simple string in multiple lines.
This string will not be available for future use.

This is simple string in multiple lines.
        and This string will be available
                in the str Variable
                        for future use.

जैसाकि उपरोक्त Code में हम देख सकते हैं कि Heredoc को Use करते समय यदि हम इसे किसी Output Statement जैसे कि ECHO या PRINT के साथ Specify करते हैं, तो Heredoc के बीच Enclosed String Directly Output में Print हो जाता है, लेकिन यदि हम Heredoc String को किसी Variable को Assign कर देते हैं, जैसाकि उपरोक्त Code में $str Variable के साथ किया गया है, तो फिर हम Heredoc String को उस Variable के माध्यम से जहां चाहें वहां Use कर सकते हैं।

जब हम Heredoc को Use करते हैं, तब हमें थोडी सावधानी बरतनी होती है, अन्यथा Heredoc Statement Error Generate करता है। Heredoc Identifier के पहले व बाद में एक भी Character, Type नहीं किया जाना चाहिए। यहां तक कि Space भी नहीं होना चाहिए।

हालांकि हम Heredoc Statement के Opening Identifier को Double Quotes के बीच Specify कर सकते हैं, क्योंकि Heredoc Statement लगभग Double Quoted String की तरह ही काम करता है, लेकिन ऐसा करना जरूरी नहीं है।

भले ही हम Heredoc Statement के Opening Identifier को Double Quotes के बीच Specify करें या न करें, लेकिन Closing Identifier को कभी भी किसी भी तरह के Quotes के बीच Specify नहीं किया जा सकता। साथ ही Closing Identifier से पहले कोई Character नहीं हो सकता जबकि बाद में Semicolon के अलावा कोई Character नहीं हो सकता और Semicolon के बाद भी कोई Character नहीं हो सकता।

साथ ही इस बात का भी ध्यान रखना चाहिए कि Closing Heredoc Identifier के अन्त में एक Semicolon का प्रयोग किया जाता है और इस Semicolon तथा Heredoc Identifier के नाम के बीच भी किसी भी तरह का Space या अन्य Character नहीं होना चाहिए।

यानी Heredoc को Use करते समय Exactly उपरोक्त Format को ही Use करना जरूरी होता है, अन्यथा PHP String Interpretation के समय Error Generate करता है।

Heredoc का प्रयोग किसी Class की Property को Specify करने के लिए भी नहीं किया जा सकता।

Heredoc Text बिल्कुल Double Quoted String की तरह Behave करते हैं। यानी हम एक Double Quoted String में जिस तरह से किसी Variable या Constant को Use करके उसकी Expanded Value प्राप्त करते हैं अथवा जिस प्रकार से विभिन्न Escape Sequence Characters को Use करते हैं, उसी प्रकार से Heredoc के बीच Enclosed String में भी इनका प्रयोग कर सकते हैं, लेकिन Heredoc के बीच Single Quotes या Double Quotes को Specify करने के लिए हमें Backslash का प्रयोग करना जरूरी नहीं होता। यानी किसी Heredoc String को हम निम्नानुसार उपयोग में ले सकते हैं:

<?php
$salary = 12000;

$str = <<< ThisIsHereDoc
The Salary of Mahesh is : $salary 
Mahesh's Birth Date is : 20-10-1982
Mahesh is learning "PHP" at this time with 
PHP in Hindi - eBook.  
ThisIsHereDoc;

PRINT $str;
?>

//Output  
The Salary of Mahesh is : 12000
Mahesh's Birth Date is : 20-10-1982
Mahesh is learning "PHP" at this time with
PHP in Hindi - eBook.

Heredoc Statement का प्रयोग हम किसी PHP Function में Argument Pass करने के लिए भी कर सकते हैं। जैसेः

<?php
$salary = 12000;

function demo($values){
	PRINT $values;
}

demo(<<<ThisIsHereDoc
The Salary of Mahesh is : $salary 
Mahesh's Birth Date is : 20-10-1982
Mahesh is learning "PHP" at this time with 
PHP in Hindi - eBook.  
ThisIsHereDoc
)
?>

//Output  
The Salary of Mahesh is : 12000
Mahesh's Birth Date is : 20-10-1982
Mahesh is learning "PHP" at this time with
PHP in Hindi - eBook.

उपरोक्त Code में हमने Heredoc Statement में Enclosed String को Directly demo() नाम के एक User Defined Function में Argument के रूप में Pass किया है और User Defined Function आने वाली Heredoc String को Echo कर रहा है।

जब हम Heredoc Statement को Argument के रूप में Pass करते हैं, तब Closing Heredoc Identifier के बाद Semicolon का प्रयोग नहीं किया जा सकता, क्योंकि PHP Semicolon को Statement का अन्त मानता है, जबकि अभी तो Function में Argument ही Pass किया जा रहा है।

इसलिए यदि हम Semicolon का प्रयोग करेंगे, तो PHP समझेगा कि Function Statement का अन्त हो गया है। परिणामस्वरूप आगे के Statements को PHP समझ ही नहीं पाएगा और Error Generate करेगा। इसीलिए उपरोक्त Code में हमने Closing Heredoc Identifier के साथ Semicolon का प्रयोग नहीं किया है।

हालांकि हम उपरोक्त तरीके का प्रयोग करके Heredoc को Function Argument के रूप में Pass कर सकते हैं, लेकिन जहां तक हो सके हमें अपने Codes को Simple रखना चाहिए, ताकि उसमें कम से कम Bugs Generate हों। इसलिए किसी Heredoc Statement को Directly Argument के रूप में Pass करने के स्थान पर हम Heredoc Statement में Enclosed String को एक Variable में Store कर सकते हैं और फिर उस Variable को Argument के रूप में Pass कर सकते हैं, जो कि ज्यादा बेहतर व Manageable तथा कम Error Prone तरीका होता है। इस प्रक्रिया को समझने के लिए हम उपरोक्त Code को ही फिर से Recreate कर रहे हैं:

<?php
$salary = 12000;

function demo($values){
	PRINT $values;
}

$hereDocValue = <<<ThisIsHereDoc
The Salary of Mahesh is : $salary 
Mahesh's Birth Date is : 20-10-1982
Mahesh is learning "PHP" at this time with 
PHP in Hindi - eBook.  
ThisIsHereDoc;

demo($hereDocValue);
?>

ये Code भी Exactly वही Output देगा, जो पिछला Program दे रहा था, लेकिन ये Code पिछले Code को Manage करने की तुलना में काफी आसान है।

हालांकि हम Heredoc का प्रयोग किसी Class की Properties को Initialize करने के लिए नहीं कर सकते, लेकिन किसी Class के Static Properties व Constant Identifiers को हम Heredoc Statement के माध्यम से Initialize कर सकते हैं। इस विषय में हम Object Oriented PHP को सीखते समय समझेंगे।

PHP in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS