در زمان توسعه یک نرم افزار پایگاه داده محور، ساختار پایگاه داده درست مثل سورس نرم افزار توسعه پیدا میکند...
به عنوان مثال، در هنگام توسعه نرم افزار ممکن است به یک جدول جدید نیاز پیدا کنید یا پس از اتمام پروژه و ارائه نسخه ی پایدار آن شاید به این نتیجه برسید که اضافه کردن شاخص(index) به ساختار یک جدول باعث بهبود کارایی نرم افزارتان میشود و...
از آنجایی که معمولا با اینگونه تغییرات باید کمی سورس نرم افزار را هم تغییر دهید yii از database migration پشتیبانی میکند.
migration در yii این امکان را به شما میدهد تا بتوانید یک migrate جدید ایجاد، اعمال، بازگردانی یا اعمال مجدد کنید. نتیجه ی تمام migrate های ایجاد شده تاریخچه ای از توسعه ی دیتابیس شماست که میتوانید ساختار و گاهی محتوای اندکی از دیتابیس را همیشه در کنار نرم افزار خود داشته و به آسانی آن را مدیریت کنید.
تمام این امکانات از طریق خط فرمان(command line) قابل استفاده هستند، میتوانید برای مشاهده توضیحات migration در خط فرمان از دستور
yii help migrate
استفاده کنید.
ادامه...gii ابزاری در yiiframework است که با استفاده از آن میتوان امکانات متداول/رایج وبسایت را به سرعت ایجاد کرد.
در واقع gii با دریافت یک سری اطلاعات به طور خودکار بخش های مورد نیاز را تولید میکند.
ایجاد، خواندن، بروزرسانی و حذف(Create, read, update and delete) که به اختصار CRUD نیز خوانده میشود چهار عملکرد اساسی مدیریت داده ها در برنامه نویسی هستند. که ممکن است در همه یا بیشتر بخش های یک وبسایت مورد نیاز بوده و تکرار شده باشند. مانند افزودن یک مطلب، بروزرسانی پروفایل کاربری یا پیوند جدید و...
gii با تولید خودکار CRUD سعی دارد برنامه نویس را در قسمت های مختلف نرم افزار درگیر مسائل تکراری و زمان بر نکند.
ادامه...active record pattern الگوی طراحیای است که معمولاً در نرمافزارهایی که از پایگاههای دادهٔ رابطهای برای ذخیره دادههای خود بهره میبرند به کار میرود.
active record pattern روشی برای دستیابی دادهها از درون پایگاه داده است. یک جدول پایگاه داده یا نما توسط یک کلاس همپوشانی میشود، بنابراین یک نمونه از شی برای یک سطر یکتا در جدول گره میخورد. پس از ساخت یک شی، سطر جدیدی به جدول افزوده میشود. هر شیای که بارگذاری میشود اطلاعات خود را از پایگاهداده میگیرد. هنگامی که شیای بهروز میشود، سطر متناظرآن جدول نیز بهروز میشود. کلاس همپوشان متدها یا خواص دستیابی برای هر ستون در جدول را پیادهسازی میکند. این الگو معمولاً توسط ابزارهای پایدار شی یا object persistence tools و در نگاشت رابطهای شی یا object-relational mapping بهکار میرود. معمولاً روابط کلیدخارجی همچون نمونه شیای که دارای نوع مناسب است توسط یک خاصیت نشان داده میشوند. پیادهسازی active record pattern را میتوان در فریمورکهای گوناگون و محیطهای برنامهنویسی بسیاری یافت. برای نمونه، اگر در یک پایگاهداده جدولی با نام parts با ستونهای name (از نوع رشتهای) و price (از نوع صحیح) وجود داشته باشد. الگوی active record pattern در کلاسی با نام part پیادهسازی میشود. این پیادهسازی در شبهکد زیر چنین است:
part = new Part()
part.name = «Sample part»
part.price = ۱۲۳٫۴۵
part.save()
شبهکد بالا سطر جدیدی را در جدول parts با مقادیر داده شده میسازد و تقریباً معادل دستور SQL زیر است:
INSERT INTO `parts` (`name`, `price`) VALUES ('Sample part', ۱۲۳٫۴۵);
ادامه...
قبل از پیکره بندی دیتابیس، ابتدا باید مطمئن باشید که اکستنشن pdo در PHP نصب/فعال باشد. این موضوع دقیقا برای PDO driver دیتابیس شما هم صدق میکند.(به عنوان مثال اگر از MySQL استفاده میکنید باید pdo_mysql را هم بررسی کنید تا فعال و قابل استفاده باشد.)
اگر از قالب basic استفاده میکنید config/db.php و اگر با advanced کار میکنید common/config/main-local.php را باز و ویرایش کنید.
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
'username' => 'root',
'password' => '',
'charset' => 'utf8'
در قالب advanced برای backend یا frontend پروژه میتوان تنظیمات دیتابیس متفاوتی قرار داد، برای این کار کافیست به عنوان مثال در backend/config/main-local.php داخل components اطلاعات دیتابیس را وارد کرد. اگر چنین اطلاعاتی در مسیر backend/config/main-local.php وجود داشته باشد framework از این پیکره بندی جهت کار با دیتابیس استفاده میکند در غیر این صورت به سراغ common/config/main-local.php خواهد رفت.
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
...
به طور معمول برای پیکره بندی از این روش استفاده میشود اما اگر شما نیاز به پیکره بندی خاصی همرا با پارامتر های متفاوتی دارید میتوانید یک نمونه از yii\db\Connection ایجاد و مقداردهی کنید.
مسیریابی در yii2 شامل دو مرحله است
- تجزیه درخواست ورودی به مسیر و query parameters
- تناظر یک controller action به مسیر و رسیدگی به درخواست
اصلی ترین واحد یک کنترلر action ها هستند که میتوان با استفاده از آنها به اجرای درخواست کاربران رسیدگی کرد.
زمانی که از فرمت پیش فرض URL استفاده میکنید، درخواست کاربر به مسیر و یک پارامتر GET به نام r تجزیه میشود.
برای اجرا و رسیدگی به درخواست کاربر باید controller action مشخصی برای مسیر ایجاد کنید.
یک مسیر به وسیله ی کاراکتر "/" به چند قسمت شکسته میشود. به عنوان مثال site/index به دو قسمت site و index شکسته خواهد شد. هر قسمت معادل یک شناسه است که به واحدی منسوب خواهد گشت(یک controller یا یک action).
با شروع از قسمت اول مسیر، framework بررسی میکند آیا چنین شناسه ای در متد actions تعریف شده یا خیر، اگر این شناسه وجود داشت یک شی از آن controller و تنظیماتی که همراه با آن در actions وجود دارد ساخته میشود در غیر این صورت controller در متد هایی که توسط کاربر نوشته شده به دنبال شناسه مورد نظر خود میگردد تا از آن استفاده کند.
1) به صفحه دانلود yii2 برید و با توجه به نیازتون قالب advanced یا basic رو دانلود کنید. (تفاوت قالب advanced و basic در yii framework 2)
2) فایل دانلود شده رو در هاست خود آپلود و از حالت فشرده خارج کنید.
3) وارد پوشه framework بشین و
در ویندوز:
نرم افزار cmd رو اجرا کنید، init رو تاپیپ و بعدش enter بزنید.
در لینوکس:
terminal رو اجرا کنید، php init رو تایپ و بعدش enter بزنید.
4) از شما پرسیده میشه که مقداردهی اولیه framework در چه محیطی باشد؟ عدد 0 معادل توسعه و 1 یعنی تجاری. از اونجایی که هدف ما پیاده سازی/توسعه یک نرم افزار جدید هست نه انتشار نهایی آن عدد 0 را تایپ و enter میزنیم. برای اطمینان از انتخاب شما و اینکه اشتباه نکرده باشید باز هم سوالی پرسیده میشود که به عنوان پاسخ yes را تایپ کنید.
5) اگر همه چیز درست انجام شده باشه باید صفحه خوش آمد گویی yii رو ببینید.
قالب advanced:
- دارای دو بخش frontend و backend در application میباشد که به عنوان مثال میتوان از backend برای پیاده سازی بخش مدیریت نرم افزار و frontend جهت قسمت کاربران استفاده کرد
- شامل مدل آماده User و قست هایی همچون ورود، بازگردانی کلمه عبور و ثبت نام است که با استفاده از آن میتوان توسعه قسمت کاربران application را به آسانی و با سرعت بیشتری انجام داد.
پس اگر در حال توسعه نرم افزاری هستین که شامل بخش های مدیریت و کاربران یا قسمت های بیشتری از این قبیل است از advanced استفاده کنید. و اگر تنها به frontend نیازمندید basic را پیشنهاد میکنم.
Hashids یک کتابخانه متن باز و کوچیکه که شناسه هایی کوتاه، منحصر به فرد و غیر متوالی از اعداد را تولید میکند.
به عنوان مثال عدد 347 تبدیل به رشته ی “yr8” یا آرایه ای شامل اعداد [27, 986] تبدیل به “3kTMd” میشه.
شما همچنین میتونید شناسه ها رو decode کنید، یعنی رشته های تولید شده به وسیله Hashids برگشت پذیر خواهند بود. حتی طول رشته تولید شده قابل تعریفه.
مثالی که توی وب شاید بارها دیدین:
https://url.ir/lqY9X
phpstorm از نسخه 2016 به بعد زبان فارسی رو به خوبی پشتیبانی میکنه.
برای حل مشکل فارسی نویسی در نسخه های 9 به بالا (تا قبل از 2016) مراحل زیرُ انجام بدین:
1- در محل نصب نرم افزار فایل idea.properties رو پیدا کنید
2- با یک ادیتور مثل notepad بازش کنید و خط زیرُ به انتهای فایل اضافه کنید:
editor.new.rendering=true
3- یک بار phpstrom رو ببندید و دوباره باز کنید.
پ.ن: موردی که خیلی وقت پیش نوشته شده بود رو در همون زمان خودم شخصا تست کرده بودم و جواب گرفتم. الان حتما از نسخه های جدید استفاده کنید.
در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حلهای قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرمافزار اتفاق می افتند.
طرح های از پیش ساخته شدهای که میتوانید برای حل مشکلات آنها را سفارشی کنید. شما نمیتوانید یک الگو را با جستجو در stackoverflow پیدا و در برنامه خود کپی کنید. الگو ها یک قطعه کد خاص نیستند، مفاهیم کلی برای حل مشکلات خاص هستند. شما باید با درک این مفاهیم آنها را در برنامه خود پیادهسازی کنید.
Refactoring مجموعهای از تکنیکهاست که به منظور اصلاح و بهبود کدهای قبلی بدون تغییر در عملکرد و رفتارشان جهت خوانایی، کارامدی و قابلیت نگهداری بیشتر انجام میشود.
در کتاب Refactoring اثر Martin Fowler نوشته شده: refactoring تکنیک مرتب/منظم سازی برای تجدید ساختار کد موجود است. تغییر ساختار داخلی کد بدون تغییر رفتار خارجی آن.
refactoring یک سرمایهگذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینههای توسعه نرمافزار در آینده خواهد شد.