একটি প্লাগইন বিকাশ করার সময় নামের জায়গার বিরোধগুলি এড়াতে ফাংশনগুলিকে একত্রে একটি শ্রেণিতে ভাগ করা উচিত?
হ্যাঁ, তবে এটি কেবল একটি ছোটখাট যুক্তি। আসলে এটি OOAD এর কোনও শ্রেণির "সত্য" প্রকৃতি নয় ।
ক্লাস ব্যবহার করে কি পিএইচপি-র জন্য পারফরম্যান্স ওভারহেড তৈরি করে?
না, উল্লেখযোগ্যভাবে নয়। খারাপ ডিজাইন এবং / অথবা খারাপ লিখিত কোড বা প্রাক-পরিপক্ক অপ্টিমাইজেশন প্রকৃত ভাষার বৈশিষ্ট্যগুলির তুলনায় অনেক বেশি কার্যকারিতা সমস্যা তৈরি করে।
যদি কোনও পারফরম্যান্স হিট হয় তবে তার পরিবর্তে ফাংশনটির নামগুলি কি পূর্ব-স্থির হওয়া উচিত?
যেমনটি লিখেছেন, কোনও পারফরম্যান্স হিট নেই। খারাপ লিখিত কোড ভাল লিখিত কোডের চেয়ে বেশি পারফরম্যান্স হিট হয়ে থাকে যার কোডের আরও কয়েকটি লাইন থাকে তবে আপনাকে খারাপ কাজ করতে বাধ্য করে না।
শেষের সারি:
প্লাগইনগুলির জন্য আপনি ক্লাসের আলাদাভাবে ব্যবহার করতে পারেন। আপনি এগুলিকে কিছু ধরণের নামস্থান রাখতে এবং বিশ্বব্যাপী ফাংশনগুলির জন্য তাদের "ঠিক" ব্যবহার করতে পারেন। এর মধ্যে সর্বাধিক প্রত্যক্ষ রূপ ফর্ম্যাটিক ক্লাস ফাংশন, নিম্নলিখিত কোড-উদাহরণ দুটি, প্রথম গ্লোবাল ফাংশন এবং তারপরে গ্লোবাল স্ট্যাটিক ক্লাস ফাংশনগুলি দেখায়:
/* global function */
function myplug_hook()
{
}
add_filter('the_hook', 'myplug_hook');
/* global static function */
class myplug
{
public static function hook()
{
}
}
add_filter('the_hook', 'myplug::hook');
এটি কেবলমাত্র একটি সামান্য উদাহরণ যা দেখায় যে আপনাকে একক হুকের জন্য আরও টাইপ করতে হবে। অতিরিক্তভাবে এটি দেখায় যে নেমস্পেসিং কীভাবে কাজ করে: আপনি সমস্ত স্থিতিশীল ফাংশনগুলির নাম পরিবর্তন করতে একক শ্রেণীর নামটি আরও সহজে প্রতিস্থাপন করতে পারেন এবং তারপরে অনুসন্ধান এবং প্রতিস্থাপন myplug::
করতে পারেন যা myplug_
মিথ্যা ধনাত্মকতার কারণে শক্ত হতে পারে । তবে শেষ পর্যন্ত খুব বেশি পার্থক্য নেই।
মূল বক্তব্যটি হ'ল: স্থির শ্রেণীর ফাংশন ডক্স আসলে আর কিছু নয় তবে গ্লোবাল ফাংশন ডক্স ।
এবং এই উদাহরণটি আরও দেখায়: নেমস্পেসিংটি ভাল, তবে ওয়ার্পড্রেস সহ হুক ব্যবহার করে নেমস্পেসিং বন্ধ হয়ে যায়: কলব্যাক ফাংশনটি কঠোরভাবে কোডড করা হয়, সুতরাং ক্লাসটি ব্যবহার করে নেমস্পেসিংয়ে সুবিধা (বেস-নামের জন্য একটি জায়গা, শ্রেণিকাম) নয় হুক নামের জন্য আপনি যখন ওয়ার্ডপ্রেসের সাথে আপনার কোডটি হস্তক্ষেপ করেন তখন সহায়তা করুন।
প্রকৃত বেনিফিটটি আসল শ্রেণীর দৃষ্টান্ত এবং অ-স্থির ফাংশন ব্যবহার করে শুরু হয়। এটির সুবিধা রয়েছে যা আপনি ওও নীতিগুলি ব্যবহার করতে শুরু করতে পারেন এবং আপনি আপনার কোডটি প্রবাহিত করতে পারেন। স্ট্যাটিক ক্লাস ফাংশনগুলি সলিউশন ইনফ্যাক্টের চেয়ে বেশি সমস্যা।
তাহলে এটি কেবল সিনট্যাকটিক চিনির চেয়ে বেশি।
মূল বক্তব্যটি হ'ল: এমন কিছু করুন যা আপনাকে সহজেই ডিল করতে এবং বজায় রাখতে পারে এমন কোড লিখতে সহায়তা করে। ওভার-রেট পারফরম্যান্স করবেন না, এটি একটি সাধারণ ভুল। আরও গুরুত্বপূর্ণ হ'ল আপনি এমন কোড লিখুন যা সহজেই পড়তে এবং বুঝতে সহজ হয়, যা আপনার প্রয়োজন অনুযায়ী করে। হতে পারে এই প্রশ্নোত্তর এই প্রসঙ্গে আরও বড় ছবির জন্য সহায়ক: একাধিক কাস্টম মেটাবক্স সহায়তা ।
এমনকি ছোট প্লাগইনগুলির সাথে আমার একটি সাধারণ পদ্ধতি হল প্লাগইনটি ইনস্ট্যান্ট করতে স্ট্যাটিক সহায়ক ফাংশনটি ব্যবহার করা এবং বাকিগুলি তখন প্লাগইন ইভেন্টের মধ্যেই থাকে। এটি মূল প্লাগইন যুক্তি সজ্জিত করতে সহায়তা করে এবং হুকের সাথে নাম স্পেসিংয়ের পাশাপাশি এটি বেসরকারী সদস্যদের হুকগুলির মধ্যে পুনরায় ব্যবহার করা যেতে পারে যা মানক বৈশ্বিক ফাংশনগুলির দ্বারা সম্ভব নয়। নিম্নলিখিত কোড-উদাহরণটি প্যাটার্নটি দেখায়:
<?php
/** Plugin Headers ... */
return MyPlugin::bootstrap();
class MyPlugin
{
/** @var MyPlugin */
static $instance;
static public function bootstrap() {
if (NULL === self::$instance) {
self::$instance = new __CLASS__;
}
return self::$instance;
}
# ...
}
আমি বেস প্লাগইন ফাইলের জন্য এটি ব্যবহার করি এমন একটি সাধারণ প্যাটার্ন। একদিকে প্লাগইন ক্লাসটি ওয়ার্ডপ্রেসে প্লাগইনকে উপস্থাপন করে এবং অন্যদিকে এটি নিজের কোডের জন্য অবজেক্ট ওরিয়েন্টড দৃষ্টান্তগুলি ব্যবহার শুরু করতে দেয় যা এমনকি পুরোপুরি অবজেক্ট ওরিয়েন্টেড (তবে এটির প্রয়োজন নেই) হতে পারে। এটি একটি নিয়ামক জাতীয়, অনুরোধ (গুলি) হিসাবে পুরো ওয়ার্ডপ্রেস এপিআইয়ের সাথে ইন্টারফেস করে।
উদাহরণটি দেখায়, প্লাগইনের একটি উদাহরণ তৈরি করা হবে। এই আপনি একটি মত পরিচিত কমন্স ব্যবহার করতে পারবেন রচয়িতা ডক্স ( __construct
) প্রকৃত প্লাগইন আরম্ভ করতে:
# ...
class MyPlugin
{
# ...
public function __construct()
{
add_filter('the_hook', array($this, 'hook'));
}
public function hook()
{
}
# ...
}
হুক নিবন্ধিত হওয়ার সময়, এই প্লাগইন অবজেক্টটি এর নকশাটি ইতিমধ্যে উপকৃত হয়েছে: আপনি কংক্রিট প্লাগইন শ্রেণীর নামের বিরুদ্ধে প্রকৃত হুক ফাংশনটি হার্ড-কোড করা থেকে বিরত করেছেন । কলব্যাকের জন্য ক্লাসের বস্তুর দৃষ্টিতে আবদ্ধ হওয়ার কারণে এটি সম্ভব। সাউন্ড জটিল, শুধু বলেন: $this
হয় প্লাগইন। হুক কলব্যাকগুলিতে ব্যবহার করা যেতে পারে, নিবন্ধকরণ শ্রেণীর পদ্ধতিগুলি হুক কলব্যাক হিসাবে তুলনা করুন ।
এই প্যাটার্নটি ওয়ার্ডপ্রেসের সাথে আরও সহজে ইন্টারফেস করতে দেয়: হুকের নামগুলিতে ইঞ্জেকশনটি হ্রাস করা হয় এবং তারা কোন ডেটা সরবরাহ করে। তারপরে আপনি সরাসরি এই প্লাগইন ক্লাসে সরাসরি প্রয়োগ করতে বা এর বিরুদ্ধে আপনার প্রয়োগ বাস্তবায়ন শুরু করতে পারেন, সুতরাং কেবলমাত্র প্লাগইন ক্লাসে কোড স্থাপন করা যা ওয়ার্ডপ্রেসের বিরুদ্ধে আপনার প্লাগইন ইন্টারফেসটি সংজ্ঞায়িত করার জন্য সর্বনিম্ন ন্যূনতম, তবে সাধারণ যুক্তিকে ওয়ার্পড্রেসের পাশে রেখে। এখান থেকেই মজা শুরু হয় এবং সম্ভবত প্রতিটি প্লাগইন লেখক দীর্ঘমেয়াদে কী অর্জন করতে চান।
সুতরাং ওয়ার্পড্রেস দিয়ে না বরং এর বিরুদ্ধে প্রোগ্রাম করুন। ওয়ার্পড্রেস যেহেতু যথেষ্ট নমনীয়, এর বিরুদ্ধে প্রোগ্রামের জন্য ইন্টারফেস বর্ণনা করার মতো কোনও সাধারণ বা সহজ নেই। একটি বেস প্লাগইন শ্রেণি এই ভূমিকা নিতে পারে, আপনাকে নিজের কোডের জন্য আরও নমনীয়তা দেয় যা সহজ কোড এবং আরও ভাল পারফরম্যান্সের দিকে পরিচালিত করে।
সুতরাং নাম-ফাঁক দেওয়ার জন্য আরও একটি সুবিধা রয়েছে। সেরা পরামর্শ আমি দিতে পারি: নিজের চেষ্টা করুন। আপনি খুব শিথিল নেই, আবিষ্কার করার জন্য কেবল নতুন জিনিস।
আপনার প্লাগইনটি সামঞ্জস্য রেখে আপনি সম্ভবত ওয়ার্ডপ্রেসের আরও কয়েকটি বড় আপডেটগুলি পাস করার পরে পার্থক্যগুলি লক্ষ্য করবেন।
ক্যাভ্যাট : কাজটি করার জন্য যদি আপনার প্লাগইন সরাসরি ওয়ার্ডপ্রেসের সাথে একীভূত হয় তবে এক বা দুটি পাবলিক ফাংশন ব্যবহার করা আপনার আরও ভাল মানায়। কাজের জন্য সঠিক সরঞ্জামটি নিন।