احسان رضایی

یک توسعه دهنده

درس های yii2 شماره 19: ایجاد extension بدون نیاز به composer و github

در yii2 , / تاریخ ارسال 30-04-1396 / 0 نظر / آخرین ویرایش 12-11-1402

بهتره اینطور عمل نکنید اما گاهی نیاز هست 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 استفاده بشه :)

پیشنهاد

کتاب‌ها

کتاب الگوهای طراحی به بیان ساده(design patterns / دیزاین پترن)

در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حل‌های قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرم‌افزار اتفاق می افتند.

طرح های از پیش ساخته شده‌ای که می‌توانید برای حل مشکلات آن‌ها را سفارشی کنید. شما نمی‌توانید یک الگو را با جستجو در stackoverflow پیدا و در برنامه خود کپی کنید. الگو ها یک قطعه کد خاص نیستند، مفاهیم کلی برای حل مشکلات خاص هستند. شما باید با درک این مفاهیم آن‌ها را در برنامه خود پیاده‌سازی کنید.

کتاب refactoring / ریفکتورینگ

Refactoring مجموعه‌ای از تکنیک‌هاست که به منظور اصلاح و بهبود کدهای قبلی بدون تغییر در عملکرد و رفتارشان جهت خوانایی، کارامدی و قابلیت نگهداری بیشتر انجام می‌شود.

در کتاب Refactoring اثر Martin Fowler نوشته شده: refactoring تکنیک مرتب/منظم سازی برای تجدید ساختار کد موجود است. تغییر ساختار داخلی کد بدون تغییر رفتار خارجی آن.

refactoring یک سرمایه‌گذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینه‌های توسعه نرم‌افزار در آینده خواهد شد.

ارسال نظر