কীভাবে। পিফটিএমএল ফাইলগুলি সরু এবং পরিষ্কার রাখা যায়?


14

যেমন এর ফাইল এক্সটেনশনের প্রস্তাব দেয় কোনও .phtmlফাইল পিএইচপি কোডকে এইচটিএমএল মিশ্রিত করতে দেয়। যাইহোক, এটা সত্য যে আপনি করতে পারেন একটি লাইসেন্স হিসেবে নয় দেখা উচিত বন্য যান।

কেন আমরা এখনও অনেকগুলি পিএইচপিএমএল ফাইলগুলি প্রচুর পিএইচপি দিয়ে ছাঁটাই দেখতে পাই? এবং একটি .phtmlফাইলে পিএইচপি এর পরিমাণ হ্রাস করার জন্য একটি ভাল পদ্ধতির কী ?

উত্তর:


10

প্রকৃতপক্ষে, আপনার .phtmlমধ্যে পিএইচপি কম তত ভাল, কারণ:

  1. পিএইচপি এবং এইচটিএমএল এর মিশ্রণ পৃথক পৃথকভাবে তাদের প্রত্যেকের চেয়ে আরও বেশি বোঝা শক্তিশালী, বিশেষত তাদের মধ্যে কেবল একটির সাথে আরামদায়ক (যেমন ফ্রন্ট-এন্ড ডিজাইনার)
  2. এটি ব্রাউজারে যা উপস্থাপন করা উচিত তা থেকে দূরে ব্লকটিতে সার্ভার কোডের সাথে ইন্টারঅ্যাকশন স্থাপন করার যৌক্তিক ধারণা তৈরি করে - এটি পুরানো "উদ্বেগের বিচ্ছেদ" মন্ত্র।

ম্যাজেন্টো কোর ফাইলটি /app/design/frontend/base/default/template/catalog/product/price.phtml একটি বেদনাদায়ক কেস। এই এইচটিএমএল "উপস্থাপনা" কোড একটি দাম প্রদর্শন করে। এটি দীর্ঘ 471 লাইন! বেশিরভাগ ক্ষেত্রে পিএইচপি যুক্তির কারণে।

আপনার ঝোঁক .phtmlএবং পরিষ্কার করতে:

  1. এর অপ্রয়োজনীয় ক্রমগুলি এড়িয়ে চলুন <?php … ?>, একক সাথে খণ্ডগুলিতে তাদের একসাথে বান্ডিল করুন<?php … ?>

  2. পিএইচপিটিএল না করে ব্লকের মধ্যে যতটা সম্ভব পিএইচপি চাপুন

  3. উপরের সাহায্যে, ব্লকে assign(‘myvar’, [expression])ph ভেরিয়েবলগুলি তৈরি করতে ব্যবহার করুন $this->...যা। পিএফটিএমএল ছাড়াই উল্লেখ করা যেতে পারে , যাতে আপনি সত্যিই সংক্ষিপ্ত হতে পারেন<?php echo $myvar; ?>

  4. এমনকি আরও পরিচ্ছন্ন চেহারার জন্য ভবিষ্যতে ম্যাগেন্তোকে ট্যুইগ অবলম্বন করতে চান

উপরের উদাহরণের মূল কোড থেকে স্নিপেটে উপরেরটি প্রয়োগ করুন: /app/design/frontend/base/default/template/catalog/product/price.phtml

<?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()): ?>

    <?php $_minimalPriceDisplayValue = $_minimalPrice; ?>
    <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))): ?>
        <?php $_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount; ?>
    <?php endif; ?>
    ….
             <?php echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false) ?>
  1. প্রথম পদক্ষেপ: <?php … ?>এই জাতীয় কিছুতে আসার পুনরাবৃত্তিটি সরান :

    if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) { $_minimalPriceDisplayValue = $_minimalPrice; if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))) { $_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount; } … echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false) ?>

উপরের সমস্ত কোড পিএইচপি একটি একক ব্লব মধ্যে রাখে।

2 + 3. এখনও আরও ভাল কিছুতে বিকশিত হয়ে, এই কোডটিকে এর ব্লকে স্থানান্তর করুন:

protected function _prepareLayout() {
    $this->assign(‘minPrice’, $this->calculateMinPrice(…));
}

protected function calculateMinPrice(…) {
    if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) {
       // etc...
    }
}

এর ব্যবহার _prepareLayout()এবং এর জন্য assign()কার্যাদি নোট করুন ।

এখন .পিফটিএমএলের সংশ্লেষিত অংশটি কেবল এই সাধারণ লাইনে হ্রাস করা যেতে পারে:

<?php echo $minPrice; ?>

আমি মনে করি আমরা সবাই তা নিয়ে বাঁচতে পারি!


5

সুন্দর লেখার জন্য, @ ফ্রিস, আমি প্রায় সমস্ত পয়েন্টে সম্মত।

মূল অবলম্বন হ'ল সমস্ত যুক্তিটিকে ব্লক শ্রেণিতে স্থানান্তর করা এবং টেমপ্লেটটিকে "মূ .়" হিসাবে তৈরি করা।

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


আপনার মন্তব্য @fschmengler প্রশংসা করুন। হ্যাঁ এটি একটি সামান্য যাদু, তবে এটি প্রথমে সমস্ত কনভেনশনগুলির ক্ষেত্রে। .এফটিএমএল ফাইলের ভিতরে এটি ব্যবহার করা অবশ্যই আমার প্রথমবার দেখেছিল যাদু করার মতো। এখন আমি এটি বুঝতে পেরেছি এবং ঠিক আছে। এটি নিদর্শন এবং সম্মেলনগুলি শেখার বিষয় a কোড-সমাপ্তি গুরুত্বপূর্ণ। তবে কি কোনও স্থাপত্য প্রোগ্রামিংয়ের সিদ্ধান্তের তুলনায় যথেষ্ট পরিশীলিত নয় এমন সরঞ্জামগুলি থেকে উদ্ভূত বাস্তববাদ স্থাপনের পক্ষে কি ন্যায্য কল?
ফ্রি

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

শীতল রাইটআপ ফ্রিস আমি বরাদ্দ অংশ ব্যতীত প্রতিটি বিষয় সঙ্গে একমত। কারণটি হ'ল কারণ এটির মধ্য দিয়ে যাওয়া একজন অন্য বিকাশকারীর জন্য magic যাদু ভেরিয়েবলগুলি খুঁজে পাওয়া খুব কঠিন হয়ে পড়ে। আমি মনে করি আমাদের এড়ানো উচিত।
রাজীব কে তোমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.