بهتره اینطور عمل نکنید اما گاهی نیاز هست extension در دسترس عموم قرار نگیره. مثلا زمانی که برای شرکت کار انجام میدین.
وارد بخش Extension Generator در ابزار gii بشید. هر بخش رو مختر توضیح میدم.
Vendor Name، به اسم نویسنده اشاره میکنه، username گیت هابتون میتونه گزینه ی خوبی باشه اما اجباری برای نام گذاری وجود نداره من از developit استفاده میکنم به جای نام کاربری گیت هابم.
Package Name، نام extension شماست. بهتره yii2 اولش باشه هر چند اینجا هم اجباری وجود نداره.
Type، عنوان که میتونه extension یا library باشه. ما هم که معلومه داریم چی درست میکنیم.
Keywords، کلمات کلیدی رو با کاما از هم جدا کنید. برای جستجو، دسته بندی و اینطور مسائل مفید هست.
License، مجوز مورد نظر رو انتخاب کنید. هر چند ما قرار نیست چیزی رو به گیت هاب انتقال بدیم اما انتخاب مجوز اجباریه. من GPL-3.0 رو خیلی دوست دارم.
Title, Description, Author Name, Author Email، عنوان، توضیحات، نام و ایمیل خودتون رو بنویسید.
Output Path، مسیری که extension در اونجا قرار میگیره هست. پیشفرض داخل یه temp dir قرارش داده تا بعد از اینکه کارمون روی extension تموم شد اون رو به گیت هاب ببریم و بعدش با composer نصبش کنیم. از اونجایی که قرار نیست ما این روند درست رو طی کنیم این مسیرُ تغییر میدیم. من به جاش vendor/developit@ گذاشتم. دقت کنید در مسیری که میذارید حتما دایرکتوری ها وجود داشته باشن.
Preview رو بزنید و تیک مورد اول یعنی composer.json رو بردارید و روی گزینه ی Generate کیک کنید.
به اون AutoloadExample.php نیازی نداریم و به عنوان مثال ایجاد شده. پاکش کنید.
من یه فایل Welcome.php و کلاس Welcome رو برای نمونه ساختم.
<?php
namespace developit\say;
class Welcome
{
public static function name($name)
{
return "wlcome {$name} :)";
}
}
حالا فایل vendor\yiisoft\extensions.php رو باز کنید. باید اطلاعات extension خودمون رو دستی اینجا بنویسیم. با توجه به مثالمون توی این آرایه بلند بالا یک گزینه اضافه میکنم.
'developit/yii2-say' => array(
'name' => 'developit/yii2-say',
'version' => '1.0.0.0',
'alias' => array(
'@developit/say' => $vendorDir . '/developit/yii2-say',
),
),
کار تمومه. حالا نوبت استفاده میشه.
use developit\say;
class DefaultController extends Controller
{
public function actionIndex()
{
echo say\Welcome::name('ehsan rezaei');
. . .
بهتره از composer و github برای ساخت extension استفاده بشه :)
yii2 extension