لاراول فریمورکی برای سرعت بخشیدن به کدنویسی

مقاله‌های زیادی درباره مقایسه فریمورک لاراول با سیمفونی یا مواردی از این قبیل در سطح اینترنت یافت می‌شود. با این حال در این مقاله قصد مقایسه فریمورک‌ها را نداریم. بلکه سعی در توضیح مزایای لاراول و امکانات فریمورک لاراول داریم. امکانات بی‌نظیری که باعث شده است برنامه‌نویسان زیادی به سمت برنامه‌نویسی لاراول تغییر مسیر دهند و با آموزش رایگان لاراول شروع به یادگیری مفاهیم اولیه لاراول کنند.

آرتیزان، بهترین دوست شما

آرتیزان در لغت به معنای صنعت‌گر است. شخصی که یک محصول را هنرمندانه با دستان خودش خلق می‌کند. اما نقش آرتیزان در فریمورک لاراول چیست؟ با استفاده از آریتزان می‌توانید کارهایی که در حالت عادی خیلی زمان‌بر بودند را با سرعت بالایی انجام دهید. آرتیزان یک  CLIاست. اگر بخواهیم کمی واضح‌تر بیان کنیم باید گفت آرتیزان برنامه‌ای است که در فریمورک لاراول تعبیه شده تا کار برنامه‌نویس را راحت‌تر کرده و سرعت کدنویسی او را بالا ببرد.

سوال:

آرتیزان کدام کارها را راحت‌تر کرده که باعث می‌شود برنامه‌نویسی سریع‌تر پیش برود؟ در ادامه این کارها لیست شده‌اند.

فرانت‌اند از پیش تنظیم شده / رابط کاربری لاراول

طولانی شدن پیکربندی فناوری فرانت‌اند مناسب، دور از ذهن نیست. خصوصاً اگر اولین بار است که این کار را می‌کنید. هنگام استفاده از فریمورک لاراول در همان ابتدای کار، می‌توانید از سه تکنولوژی از پیش تنظیم‌شده موجود استفاده کنید: bootstrap ، vue یا react.
با کمک آرتیزان می‌توانید به سرعت انتخاب کنید که از کدام فناوری در پروژه استفاده خواهید کرد.
با هم یک مثال را بررسی کنیم. فرض کنیم شما در پروژه طراحی سایت خود به react نیاز دارید. تا نسخه 5 لاراول، برای این منظور باید فقط از یک دستور استفاده کنید:

php artisan preset react

از نسخه 6 به بعد ابتدا باید پکیج UI لاراول را با استفاده از کامپوزر نصب کنید:

composer require laravel/ui

و سپس مجموعه مناسب پروژه خود را انتخاب کنید، به عنوان مثال:

php artisan ui react

همه داستان به اینجا ختم نمی‌شود. چون شما فقط با این سه تکنولوژی محدود نمی‌شوید. می‌توانیدمیتوانید از استایل‌های از پیش آماده مثل فریمورک tailwind استفاده کنید. علاوه بر این می‌توانید در GitHub نمونه‌های بسیاری از نحوه انجام این کار را پیدا کنید.

احراز هویت

هر برنامه در حال توسعه باید دارای سیستم ورود به پنل، ثبت‌نام کاربر و بازیابی رمز عبور باشد. کدنویسی همه چیز از پایه و بن با توجه به پیشرفت تکنولوژی، کار معقولی نیست. می‌توانید از راه‌حل‌های آماده استفاده کنید. مثلا شما یک تیم هستید و یک نفر یکبار قطعه کد مربوط به درگاه را نوشته‌ است. اعضای تیم از همان قطعه کد استفاده می‌کنند. اما در مورد لاراول موضوع ساده‌تر از این حرف‌ها شده است.

تا نسخه 5 لاراول، برای احراز هویت باید فقط از یک خط دستور استفاده کنید:

php artisan make:auth

برای نسخه 6 به بعد باید دوباره از پکیج UI لاراول استفاده کنید.

php artisan ui:auth

دستور بالا مسیرهای مناسب در روتینگ، کنترلرها و ویوها را برای افراد لاگین‌شده و لاگین‌نشده ایجاد می‌کند. اگر این مورد برای پروژه شما کافی نیست کمی جلوتر می‌رویم و فرم‌های ورود، ثبت‌نام و بازیابی رمز عبور را هم ایجاد می‌کنیم:

php artisan ui react -auth

الوکوئنت

این ویژگی شاید بزرگترین مزیت لاراول باشد. الوکوئنت یک ORM مبتنی بر مدل ActiveRecord است. این امکان را برای شما فراهم شده است تا با پایگاه داده به روشی کاملاً شهودی کار کنید. دیگر نوشتن کوئری‌های خام SQL را فراموش کنید و از کارکردن با پایگاه داده لذت ببرید. چند مثال را با هم بررسی کنیم:

User::where('first_name', 'Baversion')->orderBy('last_name', 'DESC')->get();

کد فوق صریح و گویا است و نیازی به موشکافی ندارد: کاربرانی را که نام آن‌ها Baversion است را دانلود و نتایج را بر اساس نام خانوادگی آن‌ها مرتب کنید. اگر به جای لیستی از همه کاربران، فقط به اولین نتیجه نیاز دارید، کافی‌ست متدget() را با متد first() جایگزین کنید:

User::where('first_name', 'Baversion')->orderBy('last_name', 'DESC')->first();

ممکن است با مشکل پیدا نکردن هیچ رکودی در پایگاه داده روبرو شوید. معمولا برای این مورد باید کدی بنویسید که صفحه 404 نمایش داده شود. برای این کار فقط کافیست findOrFail را جایگزین کنید.

User::findOrFail('first_name', 'Baversion')->orderBy('last_name', 'DESC')->get();

مثال‌های بالا فقط نگاهی اجمالی به ویژگی گویا و فصیح بودن لاراول بود. شما به همین راحتی می‌توانید رکوردها را در پایگاه داده ایجاد، ویرایش یا حذف کنید. همچنین می‌توانید رابطه‌های  یک به یک، یک به چند یا چند به چند را در بین جدول‌ها ایجاد کنید.

مایگریشن‌ها

به عنوان مثال دیگر، می‌خواهیم جداول ایجاد، ویرایش و حذف را در یک پایگاه داده ایجاد کنیم. فرض کنید شما باید یک جدول جدید با محصولی موجود در فروشگاه، ایجاد کنید. برای این منظور به مدلی احتیاج دارید که مسئولیت رسیدگی به داده‌ها را داشته باشد. همه چیز را با یک خط فرمان ایجاد می‌کنید:

php artisan make:model Product -migration

مدل Product.php در دایرکتوری app/Models (یا app در Laravel 7 یا نسخه های قبلی) ایجاد می‌شود. فلگ migration- به این معنی است که شما برای این مدل مایگریشن ایجاد کرده‌اید، که در دایرکتوری database/migration قرار دارد. در متد up() نام جدول و نوع داده را تعریف می‌کنید. مثلا:

public function up() { 
	Schema::create('products', function (Blueprint $table) { 
		$table->id();
		$table->string('name');
		$table->text('description');
		$table->float('price');
		$table->integer('stock');
		$table->tinyInteger('isActive');
		$table->timestamps(); 
	}); 
}

متد timestamps ستون‌های اضافه‌شده created_at و updated_at را ایجاد می‌کند که با ایجاد یا تغییر رکورد، به طور خودکار با داده‌های مناسب تکمیل می‌شود.

در نهایت برای ایجاد جدول فوق در پایگاه داده، باید کد زیر را اجرا کنید:

php artisan migrate

یا

php artisan migrate:fresh
برای حذف تمام داده‌های قبلی و بازسازی کل ساختار جدول از ابتدا.
در اینجا لازم است اضافه کنیم که نام جداول بر اساس مدل (Product) ایجاد شده و بطور خودکار از حالت مفرد به حالت جمع (Products) تغییر یافته است.

سیدرهای دیتابیس

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

نیاز به یک database factory داریم که با دستور زیر ایجاد می‌کنیم.

php artisan make:factory UserFactory -m User

اگر به قسمتdatabase/factory بروید، فایل ایجاد شده‌ی UserFactory.php قابل مشاهده است. در این فایل- و به طور خاص در ()definition - شما تعیین خواهید کرد که چه فیلدهایی و چه داده هایی را در جدول کاربر پر کنید.

public function definition() { 
	return [ 
		'first_name'		=> $this->faker->firstName,
		'last_name'			=> $this->faker->lastName, 
		'email'				=> $this->faker->unique()->safeEmail,
		'email_verified_at' => now(),
		'password'			=> bcrypt('password'),
		'remember_token'	=> Str::random(10), 
	]; 
}

نکته

البته نام کلیدهای جدول باید با نام ستون‌های جدول موجود در پایگاه داده مطابقت داشته باشد.

مرحله بعدی ایجاد یک seeder است. باز هم، شما برای این منظور باید از آرتیزان استفاده کنید.

php artisan make:seeder UsersTableSeeder

در فایل database/seeders/UsersTableSeeder.php که ایجاد شده است فقط باید تعداد کاربران ایجاد شده را مشخص کنید.

public function run() { \App\Models\User::factory()->count(100)->create(); } Finally, in the database/seeders/DatabaseSeeder.php file you need to add: public function run() { $this->call(UsersTableSeeder::class); }

 البته شما seeder را با استفاده از آرتیزان راه‌اندازی می‌کنید:

php artisan db:seed

پیام‌های ایمیل

پیکربندی و فرم‌دهی پیام‌های ایمیل با ظاهری زیبا ساعت‌ها کار می‌برد. در فریمورک لاراول همه چیز تا حد ممکن ساده شده است. با دستور زیر شروع کنید:

php artisan make:mail HelloWorldMail -markdown emails.hello-world

با این دستور 2 فایل ایجاد می‌شود. اولی در مسیر resources/views/mails/hello-world/blade.php که متن ایمیل را در این بخش ادیت می‌کنید. دومی کلاس App\Mail\HelloWorldMail\ که موقع ارسال پیام به آن نیاز دارید. می‌توانید متغیرها را به ویوی hello-world.blade.php مانند نام کاربری که پیام را برای او ارسال می‌کنید، منتقل کنید.

ادغام با mialgun یا mailtrap هم خیلی ساده است. مثلا برای mailtrap کافیه فقط نام کاربری و پسورد را در پرونده .env وارد کنید.

تلسکوپ

در آخر ابزار تلسکوپ را داریم که به شما امکان می‌دهد اپلیکیشن خود را اشکال‌زدایی و بهینه کنید. با تلسکوپ می‌توانید ببینید که در پس‌زمینه، در حین کار لاراول چه می‌گذرد. تلسکوپ با استفاده از سه خط دستور نصب می‌شود:

composer require laravel/telescope
php artisan telescope:install
php artisan migrate

حالا به مسیر telescope/ که بروید به کامندها، ارورها، لاگ‌ها، کوئری‌های دیتابیس، درخواست‌ها و خیلی موارد دیگر دسترسی خواهید داشت. پیشنهاد می‌کنم بخشی از وقت خود را صرف آشنایی با این ابزار کنید.

نتیجه‌گیری

همانطور که در مثال‌های بالا مشاهده کردید، بسیاری از فرایندهای وقت‌گیر در طول توسعه اپلیکیشن تا حد ممکن ساده شده است. به کمک دستورات آرتیزان نوشتن کد کارامد راحت‌تر شده است. داکیومنت‌های Laravel نیز بسیار ساده و واضح تهیه شده است و در انجمن‌هایی مانند StackOverflow یا Laracasts می‌توانید موضوعات مفید بسیاری را بیابید.

رقیه اباذری

رقیه اباذری

تو دانشگاه IT خوندم و اکثر منابع کتاب‌های ترجمه شده بودند و صدالبته مبهم :( مثلا element رو "عنصر" ترجمه می‌کردن و من همیشه می‌رفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامه‌نویسی گذاشتن، راغب‌تر بشن و با نظرات و فیدبک‌های شما راه هموارتر بشه:)

دیدگاه‌ها


ثبت دیدگاه