কেন প্রতিটি লাইনে <? পিএইচপি এবং?> রয়েছে?


24

আমি এই কনভেনশনটি সর্বত্র দেখতে পেয়েছি এবং অনেক সময় এটি আমার বাদাম চালানোর কাছাকাছি আসে:

<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
    <?php the_content(); ?>
<?php endwhile; // end of the loop. ?>

অন্তর্বর্তী এইচটিএমএল কোড না থাকলেও যেখানে প্রতিটি একক লাইনে <?phpএবং সমাপনি ?>রয়েছে।

আমার প্রশ্ন: কেন? কেন এই সমস্ত অতিরিক্ত ট্যাগ অন্তর্ভুক্ত?

আমার কাছে, মনে হয় এই সম্মেলনটি কোডে উল্লেখযোগ্য পরিমাণে বিশৃঙ্খলা যুক্ত করেছে, প্রথম স্থানে অনুসরণ করা বিরক্তিকর এবং যোগ করেছে যে আরও অনেক জায়গাতেই দুর্ঘটনাক্রমে একটি খোলার বা সমাপনী ট্যাগ ছেড়ে যায়।

বিঃদ্রঃ

এটি কোড টোয়েন্টি টুয়েলভ থিম থেকে টানা, ওয়ার্ডপ্রেস দ্বারা দেওয়া উদাহরণ।


এছাড়াও, সংক্ষিপ্তকরণের সময় বিবৃতিগুলি = o
টম জে নওয়েল

3
বন্ধ করতে পতাকা - এই প্রশ্নের কোনও সঠিক উত্তর নেই, এবং এটি অবশ্যই কোনও ডাব্লুপি নির্দিষ্ট সমস্যা নয় - পিএইচপি নিয়ে কাজ করা যে কোনও ব্যক্তি এই সমস্যার মুখোমুখি হবেন
আনু

3
@ আনু: প্রথমত, একটি প্রশ্নের সর্বদা একটি একক, চূড়ান্ত উত্তর নাও থাকতে পারে (যদিও এর এখনও সর্বোত্তম উত্তর থাকতে পারে)। নির্দেশিকাগুলি "ব্যবহারিক এবং উত্তরযোগ্য" বলে say দ্বিতীয়ত, হ্যাঁ, এটি প্রযুক্তিগতভাবে একটি পিএইচপি সমস্যা, তবে আমি ডাব্লুপিপির সাথে আমার স্বল্প সময়ে কাজ করে অনেক কিছু দেখেছি। সুতরাং, যদিও এটি ডব্লিউপি-র মধ্যে সীমাবদ্ধ নয়, আমার কাছে ডাব্লুপি সেটিং-এ জিজ্ঞাসা করার জন্য এটি যথেষ্ট সংযুক্ত বলে মনে হচ্ছে।
নির্দোষ

উত্তর:


20

এটি কোনও ওয়ার্ডপ্রেস স্টাইল গাইডে প্রস্তাবিত নয় এবং আমি মনে করি এটি একটি খারাপ কোডিং শৈলী। প্রবর্তকরা এই স্টাইলটি ব্যবহার করছেন, সম্ভবত এটি HTML এর মতো মনে হচ্ছে ...

দুর্ভাগ্যক্রমে, ডিফল্ট থিমগুলি প্রায়শই প্রায়শই এই স্টাইলটি ব্যবহার করে, তাই কিছু সূচনা মনে করতে পারে যে এটি কোনও কোড শৈলীর অংশ।

এই শৈলীর একটি অসুবিধা মন্তব্য হ্যান্ডলিং। নীচের উদাহরণটি নিবিড়ভাবে দেখুন এবং কীভাবে এটি লেখক আশা করতে পারে না:

<?php echo 'Important: '; // announcement ?>
<?php echo ' enter the word '; /* start ?>
<?php echo '<b>password</b>'; /* the end */ ?>

সৌভাগ্য যে ডিবাগিং। :)

বিধি: পিএইচপি এবং এইচটিএমএল প্রসঙ্গের মধ্যে স্যুইচ করুন কেবল যদি আপনার উভয় ভাষার আউটপুট তৈরি করতে হয়। অন্যান্য সমস্ত ক্ষেত্রে নিয়মিত লাইন ব্রেক ব্যবহার করুন।

আপডেট, আরও চিন্তা: প্রতিটি বৈধ এইচটিএমএল ফাইল একটি সম্পূর্ণ এবং বৈধ পিএইচপি প্রোগ্রাম। হ্যাঁ, এতে প্রকৃত পিএইচপি কোডের একক লাইন না থাকলেও।

আপনি যদি এইচটিএমএল থেকে শুরু করেন এবং পিএইচপি ধাপে ধাপে ছোট ছোট টুকরো যোগ করেন… তবে আমরা এখানে যে স্টাইলটি আলোচনা করছি তার সাথে আপনি শেষ করতে পারেন। সেখানেই রিফ্যাক্টরিং গেমটিতে আসে: সমস্ত কিছু প্রত্যাশা অনুযায়ী চলার পরে, কোডটি পুনরায় লিখন করুন যতক্ষণ না সম্ভব পঠনযোগ্য, বজায় রাখা সহজ এবং প্রসারিত অংশগুলি পুনরাবৃত্তি না করে until

আমি অনুমান করি কিছু লোক এই শেষ পদক্ষেপ ব্যতীত খুশি, এবং সে কারণেই এটি শীঘ্রই মারা যাবে না।


এটি অত্যন্ত দুঃখের বিষয় যে উপরের সিনট্যাক্সটি হাইলাইট করে এটি সেই মন্তব্যে আসলে কী ঘটে তা দেখায় না ...
ওয়েবওয়্যার

9
@ ওয়েবাওয়ারে আমি মনে করি যে সমস্যাটি আরও চিত্রিত করে। :)
ফুসিয়া

সত্য :) (আরও কিছু মন্তব্য এসই মন্তব্য পুলিশকে খুশি রাখতে)
ওয়েবওয়্যার

2
অ্যান্ডি অ্যাডামস ফেয়ারটি যথেষ্ট, আমি তা পুনরায় প্রচার করেছি। দুষ্ট পরামর্শদাতা এবং এখন চলে যাও। :)
ফুক্সিয়া

3
থিমগুলি এই স্টাইলটি ব্যবহার করে কারণ অন্যথায় করা কেবল খুব কুশ্রী। থিমগুলিকে রিফ্যাক্টর করার সময়, কোডটি যতটা সম্ভব পঠনযোগ্য হওয়ার জন্য পুনর্লিখনকে আমি পছন্দ করব এবং এর অর্থ চারপাশে প্রতিধ্বনি / প্রিন্টফ / ভার_ডাম্প <? ... ?>না থাকা এবং বাসা বাঁধাকে আরও সহজ করে বোঝার জন্য প্রতিটি কন্ট্রোল স্ট্রাকচারকে তাদের নিজস্ব জোড়ের মধ্যে রেখে দেওয়া। আমি ওপি-র উদাহরণের চেয়ে আলাদাভাবে কিছু করব, তা হ'ল আমি the_post();নিজের লাইনে রেখেছি ।
মিথ্যা রায়ান

12

আমি পিএইচপি মন্তব্যের জন্য এড়াতে গিয়ে, আমি একজন উত্সাহী পিএইচপি ওপেনার / টেম্পলেট ফাইলগুলির নিকটবর্তী। বিকল্পটিতে পিএইচপি স্ট্রিংগুলির মাধ্যমে এইচটিএমএল প্রতিধ্বনি জড়িত রয়েছে, যা আমার মতে আরও খারাপ দেখায়। আদিম উদাহরণ হিসাবে:

<!-- Example 1 -->
<ul>
    <?php
        foreach ( $list_items as $list_item ) {
            echo "<li><a href='" . $list_item->url . "'>" . $list_item->name . "</a></li>";
        }
    ?>
</ul>

<!-- Example 2 -->
<ul>
    <?php foreach ( $list_items as $list_item ) : ?>
        <li>
            <a href="<?php echo $list_item->url; ?>">
                <?php echo $list_item->name; ?>
            </a>
        </li>
    <?php endforeach; ?>
</ul>

উদাহরণ 2 আরও ভার্বোস? সম্ভবত? তবে পড়া এবং সম্পাদনা করা সহজ, আমার মতে। জটিল HTML এর জন্য এটি কীভাবে কুৎসিত হতে পারে তা আপনি ভাবতে পারেন।

এছাড়াও, যেমন সাইড নোট: আপনার পিএইচপি লজিকের মধ্যে এইচটিএমএল ব্যবহার করার সময় endforeachএবং তুলনায় endifএক টন পাঠযোগ্যতা বৃদ্ধি করে }


5
}ওভারের বিশাল সুবিধাটি endifহ'ল (অনেক সম্পাদকের ক্ষেত্রে) আপনি সহজেই দেখতে পাবেন যে উদ্বোধনটি {কোথায় এবং তাই সবকিছু সঠিকভাবে বন্ধ করা হয়েছে কিনা। endifশর্তাবলীর পুরো

2
foreach ( $list_items as $list_item ) printf( '<li><a href="%1$s">%2$s</a></li>', $list_item->url, $list_item->name );- দুটি লাইন, এইচটিএমএল এবং পিএইচপি সুন্দরভাবে পৃথক করা হয়েছে। : পি
ফুক্সিয়া

4
@ টসচো: আপনি বিষয়টি পুরোপুরি মিস করেছেন। আপনি এখনও পিএইচপি এবং এইচটিএমএল মিশ্রণ করছেন, দ্বিতীয় শৈলীর পছন্দ করে এমন লোকেরা এটি করে কারণ আমরা পিএইচপি স্ট্রিংয়ের ভিতরে এইচটিএমএল থাকা এড়াতে চাই। টেম্প্লেটিং ভাষা হিসাবে পিএইচপি ব্যবহার করার সময় আমি দ্বিতীয় স্টাইলটি ব্যবহার করি কারণ পিএইচপি এবং এইচটিএমএলকে সংবেদনশীলভাবে বাসা বাঁধার একমাত্র উপায়, যখন পিএইচপি স্ক্রিপ্টিং ভাষা হিসাবে ব্যবহার করার সময় আমি পূর্বের ব্যবহার করি কারণ এইচটিএমএল থাকার সাধারণত কোনও ভাল কারণ নেই স্ক্রিপ্টে যখন আপনি টেম্পলেট থেকে অ্যাপ্লিকেশন যুক্তি আলাদা করেন। সংক্ষিপ্ত ট্যাগগুলি পাওয়া গেলে দ্বিতীয় স্টাইলটি আরও ভাল হবে: <? ... ?>এবং <?= ... ?>
মিথ্যা রায়ান

1
@ পিট: আপনার যদি ধনুবন্ধগুলি মেলাতে সমস্যা হয় তবে আপনি সম্ভবত ইন্ডেন্টেশন কখনও শুনেন নি? এছাড়াও, আপনার endifকোনও শালীন সম্পাদকের উদ্বোধনটি হাইলাইট করার জন্য কনফিগার করতে সক্ষম হওয়া উচিত ।
মিথ্যা রায়ান


10

এটি পৃষ্ঠাটি দেখার মধ্যে পছন্দ সম্পর্কে:

  • সম্পূর্ণ পিএইচপি উত্পাদিত সত্তা হিসাবে
  • এইচটিএমএল ডকুমেন্ট টেমপ্লেট হিসাবে, পিএইচপি টেম্পলেট ট্যাগ দ্বারা চালিত

বিভিন্ন ব্যক্তি এ সম্পর্কে আলাদাভাবে চিন্তাভাবনা করে। মনে রাখবেন যে ফাংশনগুলি খুব কমই এই স্টাইলটি ব্যবহার করে, কারণ তারা খাঁটি পিএইচপি-র ব্লকের মতো বেশি বোধ করে। অন্যদিকে এটি টেমপ্লেটগুলিতে অস্বাভাবিক নয় কারণ এগুলি ফাইলগুলিতে বেশি ছড়িয়ে পড়ে এবং খাঁটি এইচটিএমএল পরিমাণ তাদের মধ্যে পিএইচপি এর চেয়ে সহজেই বেশি হতে পারে।

আপনি যদি টেম্প্লেটিং ইঞ্জিনগুলি (গোঁফ, টুইগ, ইত্যাদি) দিকে লক্ষ্য করেন - এগুলি দেখতে তাদের স্টাইলের মতো খুব ভাল লাগে তবে তাদের বাক্য গঠনটি প্লেইন পিএইচপি-র ভারবোসিটি দূর করে।

PS আমি নোট যে আমি কথা বলছি চাই বিবেকী HTML এ PHP 'র এম্বেডিং না আক্ষরিক উপর ট্যাগ খোলার বিভক্তি যে শুধু এটা অনুরোধে জন্য লাইন।


2

আমার প্রশ্ন: কেন? কেন এই সমস্ত অতিরিক্ত ট্যাগ অন্তর্ভুক্ত?

উত্তরটি বেশ সহজ: শ্রোতা। লোকেরা (প্রোগ্রামার নয়) থিমটি ধরে রাখে, তারপরে তাদের ইনস্টলটি এফটিপিং করে, 5 মিনিট সেটআপ চালায় এবং এগুলি ইতিমধ্যে তাদের কাছে প্রোগ্রামিংয়ের মতো বোধ করে। এরপরে তারা যখন তাদের থিমের যে কোনও একটি লাইন যুক্ত করতে বা পরিবর্তন করতে চায় , তবে তারা সম্ভবত ইতিমধ্যে এইচটিএমএল কী তা নির্ধারণ করতে পারে। পিএইচপি এখনও তাদের নাগালের বাইরে থাকবে। সুতরাং আমার অনুমান যে এর পেছনের ধারণাটি হ'ল কোনও ভুল করার সময় কোনও কিছু না ভাঙ্গিয়ে উপাদানগুলিকে আরও সহজে যোগ করার বা অপসারণের অনুমতি দেওয়া।

দ্রষ্টব্য: এটি আমার পছন্দ, পছন্দ বা সুপারিশ নয় is কেন আমি এমন মনে করি কেন এটি ঘটে।


0

আমি খুঁজে পেয়েছি যে কিছু নতুন প্রোগ্রামারদের এভাবে প্রশিক্ষণ দেওয়া হচ্ছে। আমি লিন্ডায় একটি 40 ঘন্টা কোর্স অনুসরণ করছি এবং প্রশিক্ষক ফাংশন সংজ্ঞা ব্যতীত প্রতিটি লাইনে পিএইচপি ট্যাগগুলি ছাড়ছেন। এটি সম্ভবত এইচটিএমএল এবং পিএইচপি এর মধ্যে স্পষ্টভাবে লাইনগুলি আঁকতে পারে যা সম্ভবত নতুন লোকদের বুঝতে সাহায্য করে যে এইচটিএমএল শেষ এবং পিএইচপি শুরু হয়। এর পরে, এটি সম্ভবত একটি অভ্যাস। আমি নিজে নিজে এতে বিরক্ত হতে শুরু করেছি এবং সিদ্ধান্ত নিয়েছি যে অন্য কেউ অভিযোগ করছে কিনা তা দেখার জন্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.