


آپدیت جدید لاراول: روش afterRefreshingDatabase
یکی از ویژگیهایی که از نسخه 8.76 به لاراول افزوده شد، روش تست afterRefreshingDatabase بود که امکان تست برخی از دادهها را به صورت مستقیم پس از اجرای migration فراهم میکند.
لاراول به عنوان یک فریمورک مبتنی بر PHP که کاربردهای گستردهای در توسعه وبسایت و اپلیکیشنهای وب دارد، امروزه به یکی از پرطرفدارترین محیطهای طراحی وبسایت تبدیل شده است. امکانات بیشتری در نسخههای آپدیت این فریمورک ارائه میشود که کاربری آن را سادهتر ساخته و از نظر توسعهدهندگان آن را به یک گزینه مطلوب تبدیل میکند.
لاراول 9 به عنوان آخرین نسخه اصلی این فریمورک است که قرار است در ژانویه سال 2022 منتشر شود، اما در حال حاضر جدیدترین نسخه منتشر شده لاراول، نسخه 8 است که ویژگیهای متمایزی را برای کاربران ارائه کرده است. به عنوان مثال بهروزرسانی صفحات فرود (Landing Page)، حالت تعمیر (Maintenance Mode) و غیره برخی از ویژگیهای جالب توجه در نسخه جدید لاراول هستند.
یکی از ویژگیهایی که از نسخه 8.76 به لاراول افزوده شد، روش تست afterRefreshingDatabase بود که امکان تست برخی از دادهها را به صورت مستقیم پس از اجرای migration فراهم میکند.
منظور از migration انتقال دادهها از یک سرور به سرور دیگر است. در فرآیند انتقال بین سرور، آسیبدیدگی برخی از فایلها و عدم اجرا و یا شناسایی آنها روی سرور جدید، امری طبیعی است. ویژگی afterRefreshingDatabase در لاراول به کاربران این امکان را میدهد که دادهها را به صورت همزمان و یا پس از اجرای انتقال سرور، تست کنند.
در این مقاله سعی خواهیم کرد نکاتی در مورد ویژگی جدید آپدیت لاراول و روش تست afterRefreshingDatabase ارائه دهیم. اگر به عنوان یک توسعهدهنده وب مشغول به کار هستید و از فریمورک محبوب لاراول برای این منظور استفاده میکنید، پیشنهاد میکنیم تا انتهای این مقاله ما را همراهی کنید.
ویژگیهای آپدیت جدید لاراول
از آنجایی که آخرین نسخه منتشر شده لاراول تا کنون نسخه 8 میباشد، در این بخش برخی از ویژگیهای مهم و متمایز این نسخه از فریمورک لاراول را بیان خواهیم کرد. ویژگیهای نسخه جدید لاراول را میتوان از چند جنبه مختلف بررسی کرد که عبارتاند از: پیشنیازها، نصب، تست نصب، و ویژگی احراز هویت. در ادامه این بخش، هر یک از این جنبهها را بررسی خواهیم کرد.
پیشنیازها
در این مقاله فرض ما این است که شما مهارتهای اولیه در PHP و HTML را دارا میباشید. برای استفاده از لاراول 8، یک سری پیشنیازها برای پیکربندی سیستم و نسخه PHP و پیشنیازهای سرور مورد نیاز است. هر یک از این دو مورد را در ادامه بررسی خواهیم کرد:
PHP و افزونههای آن
در نسخه جدید آپدیت شده لاراول، نسخه PHP میبایست نسخه 7.3 به بعد باشد. همچنین برخی از افزونههای مورد نیاز فریمورک لاراول به شرح زیر هستند:
• افزونه BCMath PHP
• افزونه PHP Ctype
• افزونه JSON PHP
• افزونه PHP Mbstring
• افزونه OpenSSL PHP
• افزونه PDO PHP
• افزونه PHP Tokenizer
• افزونه XML PHP
سرور
برای لاراول 8 میبایست از سرور Apache یا Nginx استفاده کنید. با توجه به سیستم عامل خود، باید سرورهای WAMP (سیستمعامل پایه ویندوز)، XAMPP (سیستمعامل کراس پلتفرم)، LAMP (سیستمعامل پایه لینوکس) را برای اجرای برنامههای PHP نصب کنید.
نصب
پس از نصب PHP متناسب با نسخه آپدیت فریمورک لاراول، میبایست فرآیند نصب را تائید کنید. برای این منظور در نسخه 8 دو گزینه برای بررسی و تائید نصب PHP وجود دارد که عبارتاند از:
• استفاده از خط دستور یا Command Line
• استفاده از تابع PHP
برای بررسی و تائید نصب PHP به کمک خط دستور، ترمینال را باز کرده و دستور زیر را تایپ کنید. لازم به ذکر است این دستور برای سرورهای Apache عمل میکند.
$ php -v
خروجی این دستور به صورت زیر خواهد بود:
PHP 7.3.22-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 9 2020 06:46:12) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.22, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.22-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
اگر سرور مورد استفاده شما Nginx است میتوانید از خط دستور زیر استفاده کنید:
$ php-fpm7.3 -v
به منظور بررسی و تأیید نصب PHP به کمک تابع PHP میبایست به محیط localhost بروید. در این بخش یک فایل با نام دلخواه با پسوند .php ایجاد کنید. سپس لازم است که این فایل را در مرورگر خود اجرا نمایید. مرورگر را باز کرده و در قسمت URL عبارت ocalhost/info.php را تایپ کنید. به جای info نام فایل .php را که ایجاد کردهاید، قرار دهید.
با اجرای این فایل در مرورگر، پیغامی نظیر خروجی روش خط دستور نمایش داده خواهد شد که نصب و نسخه نصب شده PHP در آن قابل مشاهده است.
احراز هویت
ویژگی احراز هویت در لاراول 8 کمی تغییر کرده است. در این بخش مراحل احراز هویت به صورت مرحله به مرحله در لاراول 8 ارائه میشود.
1. ایجاد یک پروژه لاراول 8
ابتدا میبایست یک پروژه لاراول 8 ایجاد کنیم. اگر قبلاً لاراول 8 را نصب کردهاید، میتوانید این مرحله را نادیده بگیرید. به عنوان مثال برای ایجاد پروژه دستور زیر را وارد کنید:
composer create-project laravel/laravel laravel8 8.0
در این مثال، laralel8 نام پروژه است.
2. نصب پکیج Laravel UI
پکیج رسمی Laralvel UI را برای ایجاد چارچوب در لاراول 8 نصب نمایید. برای این منظور میتوانید دستور زیر را اجرا کنید:
composer require laravel/ui
3. ساخت چارچوب auth
در این مرحله میتوان چارچوب auth را با Bootstarp ایجاد کرد. البته از React و Vue نیز میتوان به جای Bootstrap استفاده نمود. به عنوان مثال برای ایجاد چارچوب auth با استفاده از Vue دستور زیر را اجرا کنید:
php artisan ui vue --auth
4. نصب dependency های NPM
در این بخش میبایست dependency های NMP نصب شوند. برای نصب میتوان دستور زیر را اجرا کرد:
npm install
همچنین برای تکمیل فرآیند فوق دستور زیر را در ادامه اجرا نمایید:
npm run dev
5. تست سیستم احراز هویت
در این مرحله سیستم احراز هویت لاراول 8 آماده است. برای چک کردن آن و بررسی نصب صحیح میبایست آن را تست کرد. برای تست میتوان مرورگر را باز کرده و لینکهای زیر را در مرورگر وارد کرد:
example.com/login
برای بررسی رجیستری نیز لینک زیر را وارد کنید:
example.com/register
6. محدودسازی مسیرها
پس از نصب موفق سیستم احراز هویت برای لاراول 8 میتوان مسیرهای کاربران غیرمجاز را مسدود کرد. برای این منظور از کد زیر استفاده کنید:
Route::get('dashboard', 'App\Http\Controllers\UserController@dashboard')->middleware('auth');
به این ترتیب، سیستم احراز هویت نصب، تست و راهاندازی میشود. این مراحل برای لاراول 8 ارائه شده است و در نسخههای قدیمیتر کمی متفاوت است.
ویژگیهای دیگری نظیر بهروزرسانی صفحه فرود، دایرکتوری مدلهای جدید، حذف پیشوند نام کنترلر، روش تخلیه پایگاه داده و غیره نیز به لاراول 8 افزوده شده است. در ادامه روش تست afterRefreshingDatabase را به عنوان یک ویژگی جدید بررسی خواهیم کرد.
روش afterRefreshingDatabase
روش afterRefreshingDatabase توسط Luke Downing به منظور تست دادهها در حین انتقال سرور در لاراول 8 ارائه شده است. البته اگر بخواهیم دقیقتر بگوییم از نسخه 8.76 این ویژگی به لاراول اضافه شده است. سؤال اصلی اینجاست که چه زمانی و کجا میتوان از این ویژگی استفاده کرد؟ پاسخ این سؤال را در این بخش بیان خواهیم کرد.
در زمان انتقال سرور، یکی از مراحلی که قبلاً در نسخههای قبلی لاراول انجام میشد، تازهسازی پایگاه داده بود که به RefreshDatabase مشهور است. این روش قبلاً به صورت دستی انجام میشد و دردسرهای زیادی داشت. اما با افزودن ویژگی afterRefreshingDatabase این روش توسط توسعهدهندگان مورد استقبال قرار گرفته و به یکی از ویژگیهای پیشفرض لاراول تبدیل شد.
پیش از این، روش LazilyRefreshDatabase مورد استفاده قرار میگرفت که در برخی از پروژههای لاراول بسیار زمانبر بود. دلیل زمانبر بودن این روش این بود که پایگاه داده پس از هر تست، بهروزرسانی میشد. در حالی که در روش تست afterRefreshingDatabase، پس از انتقال پایگاه داده، دادهها به صورت منفرد تست میشوند.
در روش afterRefreshingDatabase در واقع یک هوک جدید به کار میرود. هوک جدید پس از بهروزرسانی پایگاه داده فعال میشود. در اصل در متد afterRefreshingDatabase هنگامی که پایگاه داده بهروزرسانی میشود، این متد فعال شده و مکان مناسبی را برای اجرا و راهاندازی هر یک از کدها ایجاد میکند. سپس کدهای قرار گرفته در مکان جدید به کمک این متد تست میشوند. نمونهای از کد اجرای روش afterRefreshingDatabase در زیر آورده شده است:
abstract class TestCase extends BaseTestCase 2{ 3 use CreatesApplication; 4 use LazilyRefreshDatabase; 5 6 protected function afterRefreshingDatabase() 7 { 8 $this->artisan('db:seed', [ 9 '--class' => RoleAndPermissionSeeder::class 10 ]); 11 } 12}
جمعبندی
در این مقاله به بررسی ویژگیهای نسخه جدید لاراول یعنی Laravel 8 پرداختیم. نسخه لاراول 9 قرار است در ژانویه 2022 منتشر شود بنابراین تا کنون جدیدترین نسخه منتشر شده آن لاراول 8 است که ویژگیهای متمایزی را نسبت به نسخه 7 ارائه داده است.
لاراول به دلیل قابلیتهای زیادی که در طراحی وب و وب اپ در اختیار توسعهدهندگان قرار میدهند همواره یکی از فریمورکهای محبوب در دنیا بوده است. ویژگیهای جدیدی که از نظر نصب و سیستم احراز هویت در لاراول 8 ارائه شده است استفاده از آن را به خصوص برای وبسایتهایی که دارای اطلاعات مهم و حساس هستند، مناسب میسازد.
یک ویژگی بارز لاراول که از نسخه 8.76 به بعد به آن اضافه شد و به عنوان یک متد پیشفرض در این فریمورک فرار گرفت، روش تست afterRefreshingDatabase است که بر مبنای تست و راهاندازی دادهها پس از انتقال پایگاه داده در فرآیند Migration عمل میکند.
انتقال سرور یک فرآیند حساس است که احتمال خرابی و از دست رفتن دادهها در آن وجود دارد. این متد امکان تست و راهاندازی و جایابی کدها را در سرور جدید فراهم میکند. همچنین به دلیل تست کدها پس از انتقال سرور، برعکس روش قدیمیتر LazilyRefreshDatabase، سرعت انتقال پایگاه داده در فرآیند Migration بیشتر شده است. این ویژگی به خصوص برای وبسایتهایی که از سرورهای Apache یا Nginx استفاده کرده و انتقال سرور نیز بین این دو سرور انجام میشود، مناسب است.