অ্যাপ্লিকেশন প্লাগিন উন্নয়ন স্ট্যান্ডার্ড
অ্যাপ্লিকেশন প্লাগিন প্রয়োজনীয়তা
- প্লাগিনে কোনও লঙ্ঘনের কোড, আইকন, ছবি ইত্যাদি অন্তর্ভুক্ত করা যাবে না
- প্লাগিনের সোর্স কোড অবশ্যই সম্পূর্ণ কোড হতে হবে, এবং এটি এনক্রিপ্ট করা যাবে না
- প্লাগিনে অবশ্যই সম্পূর্ণ কার্যকারিতা থাকতে হবে, এটি সাধারণ কার্যকারিতা হতে পারে না
- সম্পূর্ণ কার্যকারিতা পরিচিতি, ডকুমেন্টেশন প্রদান করতে হবে
- প্লাগিনে সহযোগিতামূলক কার্যকারিতা ব্যবহার করার পরামর্শ দেওয়া হয় না, কারণ ব্যবহারকারীর সহযোগিতা সক্ষম করা নাও থাকতে পারে
অ্যাপ্লিকেশন প্লাগিন চিহ্ন
প্রতি অ্যাপ্লিকেশন প্লাগিনের একটি অনন্য চিহ্ন থাকে, এই চিহ্ন অক্ষর দ্বারা গঠিত হয়। এই চিহ্নটি অ্যাপ্লিকেশন প্লাগিনের সোর্স ডিরেক্টরি নাম, ক্লাসের নেমস্পেস এবং প্লাগিনের ডাটাবেস টেবিলের উপসর্গকে প্রভাবিত করে।
ধরা যাক, ডেভেলপার foo
কে প্লাগিন চিহ্ন হিসেবে গ্রহণ করেছে, তাহলে প্লাগিন সোর্সের ডিরেক্টরি হবে {প্রধান প্রকল্প}/plugin/foo
, প্রাসঙ্গিক প্লাগিনের নেমস্পেস হবে plugin\foo
, টেবিলের উপসর্গ হবে foo_
।
যেহেতু চিহ্নটি গোটা ইন্টারনেটে অনন্য, তাই ডেভেলপারকে উন্নয়নের আগে চিহ্নটি ব্যবহারযোগ্য কিনা তা পরীক্ষা করতে হবে, পরীক্ষার ঠিকানা অ্যাপ্লিকেশন চিহ্ন পরীক্ষা।
ডেটাবেস
- টেবিলের নাম ছোট হাতের অক্ষর
a-z
এবং আন্ডারস্কোর_
দ্বারা গঠিত হবে - প্লাগিনের ডেটা টেবিল প্লাগিন চিহ্ন দ্বারা উপসর্গ হতে হবে, উদাহরণস্বরূপ foo প্লাগিনের article টেবিল হবে
foo_article
- টেবিলের প্রধান চাবি হওয়া উচিত id সূচক
- সঞ্চয় ইঞ্জিন হিসাবে ঐক্যবদ্ধভাবে innodb ইঞ্জিন ব্যবহার করুন
- অক্ষর সেট হিসাবে ঐক্যবদ্ধভাবে utf8mb4_general_ci ব্যবহার করুন
- ডেটাবেস ORM হিসাবে laravel বা think-orm যে কোনওটি ব্যবহার করা যেতে পারে
- সময় ক্ষেত্র হিসাবে DateTime ব্যবহার করার পরামর্শ দেওয়া হয়
কোড স্ট্যান্ডার্ড
PSR স্ট্যান্ডার্ড
কোডটি PSR4 লোডিং স্ট্যান্ডার্ড মেনে চলবে
ক্লাসের নাম বৃহত্তম অক্ষর দিয়ে শুরু হওয়া ক্যামেল কেস
<?php
namespace plugin\foo\app\controller;
class ArticleController
{
}
ক্লাসের গুণ বৈশিষ্ট্য এবং পদ্ধতি ছোট হাতের অক্ষর দিয়ে শুরু হওয়া ক্যামেল কেস
<?php
namespace plugin\foo\app\controller;
class ArticleController
{
/**
* প্রমাণীকরণের প্রয়োজন নেই এমন পদ্ধতি
* @var array
*/
protected $noNeedAuth = ['getComments'];
/**
* মন্তব্য সংগ্রহ করুন
* @param Request $request
* @return Response
* @throws BusinessException
*/
public function getComments(Request $request): Response
{
}
}
মন্তব্য
ক্লাসের গুণ বৈশিষ্ট্য এবং ফাংশন অবশ্যই মন্তব্য থাকতে হবে, যার মধ্যে সারসংক্ষেপ, পরামিতি, ফেরত ধরনের অন্তর্ভুক্ত থাকতে হবে
ইনডেন্টেশন
কোডে 4টি স্পেস দিয়ে ইনডেন্ট করতে হবে, ট্যাব ব্যবহার করে নয়
প্রবাহ নিয়ন্ত্রণ
প্রবাহ নিয়ন্ত্রণের মূল শব্দ (if, for, while, foreach ইত্যাদি) পরে একটি স্পেস থাকা উচিত, প্রবাহ নিয়ন্ত্রণের কোডের শুরুতে খুলি ব্রেস শেষ圆括号র সাথে একই লাইনে থাকা উচিত।
foreach ($users as $uid => $user) {
}
অস্থায়ী পরিবর্তনশীল নাম
ছোট হাতের অক্ষর দিয়ে শুরু হওয়া ক্যামেল কেস ব্যবহার করার পরামর্শ দেওয়া হয় (এটা বাধ্যতামূলক নয়)
$articleCount = 100;