পিএইচপি-তে হেরডোক ব্যবহার করার সুবিধা কী এবং আপনি একটি উদাহরণ দেখাতে পারেন?
পিএইচপি-তে হেরডোক ব্যবহার করার সুবিধা কী এবং আপনি একটি উদাহরণ দেখাতে পারেন?
উত্তর:
হেরডোক সিনট্যাক্সটি আমার কাছে অনেক বেশি ক্লিনার এবং এটি বহু-লাইন স্ট্রিং এবং উদ্ধৃত ইস্যুগুলি এড়ানোর জন্য সত্যই কার্যকর। সেদিন আমি এসকিউএল কোয়েরিগুলি তৈরি করতে তাদের ব্যবহার করেছি:
$sql = <<<SQL
select *
from $tablename
where id in [$order_ids_list]
and product_name = "widgets"
SQL;
আমার কাছে এটিতে কোটেশন ব্যবহারের চেয়ে সিনট্যাক্স ত্রুটি প্রবর্তনের কম সম্ভাবনা রয়েছে:
$sql = "
select *
from $tablename
where id in [$order_ids_list]
and product_name = \"widgets\"
";
আরেকটি বিষয় হ'ল আপনার স্ট্রিংয়ে ডাবল উদ্ধৃতিগুলি এড়িয়ে যাওয়া:
$x = "The point of the \"argument" was to illustrate the use of here documents";
উপরোক্ত পিপ্রব্লেমটি সিনট্যাক্স ত্রুটি (নিখোঁজ হওয়া উদ্ধৃতি উদ্ধৃতি) আমি এখানে ডকুমেন্ট সিনট্যাক্সের বিপরীতে হিসাবে কেবল পরিচয় করিয়েছি:
$x = <<<EOF
The point of the "argument" was to illustrate the use of here documents
EOF;
এটি কিছুটা স্টাইল, তবে আমি স্ট্রিং সংজ্ঞায়িত করার জন্য একক, ডাবল এবং এখানে নথির নিয়ম হিসাবে নিম্নলিখিতটি ব্যবহার করি:
'no variables here'
"Today is ${user}'s birthday"
--ansi
অনুবর্তী মোডে চলবে না । এসকিউএল স্ট্রিংগুলিতে অবশ্যই একক উদ্ধৃতি ব্যবহার করা উচিত ।
SELECT * FROM "order" WHERE "table"='1'
বর্ধিত পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের কারণে হেরাদোকগুলি উদ্ধৃত স্ট্রিংয়ের দুর্দান্ত বিকল্প। আপনাকে উদ্ধৃতিগুলি এড়াতে হবে না এবং (ভাল) আইডিই বা পাঠ্য সম্পাদকরা সঠিক সিনট্যাক্স হাইলাইটিং ব্যবহার করবে।
একজন খুব সাধারণ উদাহরণ: পিএইচপি মধ্যে থেকে বের এইচটিএমএল অনুনাদী:
$html = <<<HTML
<div class='something'>
<ul class='mylist'>
<li>$something</li>
<li>$whatever</li>
<li>$testing123</li>
</ul>
</div>
HTML;
// Sometime later
echo $html;
এটি পড়া সহজ এবং বজায় রাখা সহজ।
বিকল্পটি উদ্ধৃত স্ট্রিংগুলি প্রতিধ্বনিত করছে, যা শেষ পর্যন্ত পালানো উক্তি এবং আইডিইগুলি সেই ভাষার জন্য সিনট্যাক্সটি হাইলাইট করবে না, যা নিম্নতর পাঠযোগ্যতা এবং রক্ষণাবেক্ষণে আরও অসুবিধার দিকে পরিচালিত করে।
আপনার সাধারণ জ্ঞানের জন্য আপডেট উত্তর
অবশ্যই আপনি এইচটিএমএল হিসাবে হাইলাইট করা কোনও এসকিউএল কোয়েরি দেখতে চাইবেন না। অন্যান্য ভাষা ব্যবহার করতে, বাক্য গঠন বাক্যটিতে কেবল ভাষাটি পরিবর্তন করুন:
$sql = <<<SQL
SELECT * FROM table
SQL;
কিছু আইডিই হেরেডোক স্ট্রিংগুলিতে কোডটি স্বয়ংক্রিয়ভাবে হাইলাইট করে - যা এক্সএমএল বা এইচটিএমএলকে দৃষ্টি আকর্ষণীয় করে তোলে he
আমি ব্যক্তিগতভাবে এটি এক্সএমএল এর দীর্ঘ অংশের জন্য পছন্দ করি যেহেতু আমার উদ্ধৃতি চরিত্রগুলি উদ্ধৃত করার বিষয়ে যত্ন নেওয়ার দরকার নেই এবং কেবল এক্সএমএল পেস্ট করতে পারি।
প্রথমত, সমস্ত কারণ বিষয়গত হয়। এটি কারণ হিসাবে বরং স্বাদের বিষয় মত।
ব্যক্তিগতভাবে, আমি হেরডোককে বেশ অকেজো বলে মনে করি এবং মাঝে মাঝে এটি ব্যবহার করি, যখন বেশিরভাগ সময় আমাকে কিছু পরিবর্তনশীল হিসাবে এইচটিএমএল পাওয়ার প্রয়োজন হয় এবং উদাহরণস্বরূপ একটি এইচটিএমএল ইমেল বার্তা গঠনের জন্য আউটপুট বাফারিংয়ের সাথে বিরক্ত করতে চাই না।
ফর্ম্যাট করা সাধারণ ইনডেন্টেশন নিয়মের সাথে খাপ খায় না, তবে আমি মনে করি এটি কোনও বড় বিষয় নয়।
//some code at it's proper level
$this->body = <<<HERE
heredoc text sticks to the left border
but it seems OK to me.
HERE;
$this->title = "Feedback";
//and so on
গ্রহণযোগ্য উত্তরের উদাহরণ হিসাবে, এটি নিছক প্রতারণামূলক।
স্ট্রিং উদাহরণগুলি, প্রকৃতপক্ষে, যদি কেউ তাদের সাথে প্রতারণা না করে তবে আরও সংক্ষিপ্ত হওয়া
$sql = "SELECT * FROM $tablename
WHERE id in [$order_ids_list]
AND product_name = 'widgets'";
$x = 'The point of the "argument" was to illustrate the use of here documents';
আমি জানি না যে আমি বলব হেরিডোক অলসতা। কেউ বলতে পারেন যে কোনও কিছু করা অলসতা, কারণ যে কোনও কিছু করার জন্য সবসময় আরও জটিল উপায় রয়েছে।
উদাহরণস্বরূপ, নির্দিষ্ট পরিস্থিতিতে আপনি এম্বেড ভেরিয়েবলের সাথে ফাইল থেকে আনতে এবং টেমপ্লেট প্রতিস্থাপন না করে পাঠ্য আউটপুট করতে চাইতে পারেন। হেরাদোক আপনাকে উদ্ধৃতিগুলি এড়িয়ে যাওয়ার অনুমতি দেয়, সুতরাং আপনি যে পাঠ্যটি দেখছেন তা হ'ল আউটপুট। স্পষ্টতই কিছু নেতিবাচকতা রয়েছে, উদাহরণস্বরূপ, আপনি আপনার বংশগতিতে যুক্ত করতে পারবেন না এবং এটি কিছু পরিস্থিতিতে হতাশ হয়ে উঠতে পারে, বিশেষত যদি আপনার ইউনিফাইড সিনট্যাক্সের জন্য একটি স্টিকারার, যা আমি।