ফাংশন.ফেপগুলিতে গ্লোবাল ফাংশনের পরিবর্তে ক্লাস ব্যবহার করা


11

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

function my_theme_do_foo() { // ... }

function my_theme_do_bar() { // ... }

add_action( 'foo_hook', 'my_theme_do_foo' );

এটি আমার কাছে মনে হবে যে কোনও শ্রেণি ব্যবহার করা হলে জিনিসগুলি কিছুটা ভাল "এনপ্যাপসুলেটেড" হতে পারে:

class MyTheme {
    function do_foo() { // ... }
    function do_bar() { // ... }
}

$my_theme = new MyTheme();

add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) );

দ্বিতীয় পদ্ধতির সুবিধা (আমার নম্র দৃষ্টিতে):

  • সংক্ষিপ্ত ফাংশন নাম
  • উদাহরণ ভেরিয়েবল অ্যাক্সেস (বৃহত্তম সুবিধা আইএমও)
  • কোনও বৈশ্বিক ফাংশন নেই

অসুবিধাগুলি:

  • শ্রেণিকাম এখনও দ্বন্দ্ব সৃষ্টি করতে পারে
  • চাইল্ড থিমের সাথে "কাস্টমাইজ" করার মতো পরিষ্কার নয় (পিতামাতার শ্রেণিটি প্রসারিত করতে হবে)
  • বেশিরভাগ থিমগুলি এটি এভাবে করেনি, তাই আপনি প্রবণতাটি সন্ধান করবেন

আমি সম্ভবত কিছু জিনিস উপেক্ষা করছি, তবে আমি ভাবছি কেন ওওপি পদ্ধতির অবলম্বন করবেন না? এটি কিছুটা হলেও আমার কাছে "ক্লিনার" বোধ করে। সম্ভবত আমি ভুল করছি?

আমি ওয়ার্ডপ্রেস থিম বিকাশে মোটামুটি নতুন, তাই যদি ডাব্লুপি সম্প্রদায়ে সাধারণ জ্ঞান হয় তবে আমাকে ক্ষমা করুন :)। জিনিসগুলি কেন সেভাবে হয় তা কেবল কেবল তা জানার চেষ্টা করা হচ্ছে।


আপনি কোভেশেনিন থেকে থিমগুলি পরীক্ষা করতে পারেন - ওয়ার্ডপ্রেস.আর.জি. / এক্সটেন্ড / থিম / প্রোফিল / কোকসেনিন তিনি ফাংশন.এফপি-তে ওওপি পদ্ধতির ব্যবহার করেন
মামাদুকা

উত্তর:


9

এনক্যাপসুলেশনের জন্য ক্লাস ব্যবহার করা প্লাগইনগুলির জন্য বেশ কয়েকটি বিকাশকারী খুব সাধারণ পদ্ধতি। আমি এটি করি, এবং আমি এটি আরও পরিষ্কার খুঁজে পেয়েছি। তবে প্লাগইনগুলির জন্য। থিমগুলি প্রকৃতির দ্বারা আরও পদ্ধতিগত।

আমরা এটি ডিফল্ট ওয়ার্ডপ্রেস থিমগুলির জন্য করি না কারণ এটি প্রবেশের ক্ষেত্রে বাধা সৃষ্টি করে। ফাংশনগুলি বেশ সহজ। ক্লাসে আবদ্ধ ক্রিয়াগুলি সরানো কঠিন হতে পারে (এবং নির্দিষ্ট পরিস্থিতিতে সম্ভাব্য বগি)।

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

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


উত্তরের জন্য ধন্যবাদ, নাসিন। ক্লাস সহ "আনহুকিং" ক্রিয়াতে অসুবিধা সম্পর্কে আমি ভাবিনি। বিকল্পগুলির এনক্যাপসুলেশন সম্পর্কে - আমরা একই জিনিসটি চিন্তা করছিলাম: github.com/jestro/struts
অ্যান্ডি অ্যাডামস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.