با تعداد زیاد فریمورک های موجود برای PHP این میتونه گیجکننده باشه که بهترین رو انتخاب کنید, مخصوصاً وقتی که بخواید یک اپلیکیشن وب فوقالعاده برای کسب و کار خودتون بسازید.
درحال حاضر لاراول 30366 ستاره در Github داره و تعداد زیادی از وب سایتهای معروف و درحال رشد با این فریمورک گسترش پیدا کردند. هماکنون نزدیک به 5500 وبسایت معروف از لاراول استفاده میکنند و این تعداد رشد زیادی نسبت به سالهای پیش داشته.
حالا که با قدرت لاراول آشنا شدیم میخوایم دلایل فنی پیشرفت این فریمورک که باعث شده بهترین فریمورک PHP بشه رو بررسی کنیم.
دلایل اینکه چرا لاراول بهترین فریمورک PHP است :
1 – تکنیک مجوزها (Authorization)
لاراول پیادهسازی تکنیک های مجوزها رو بسیار ساده می کنه. همه چیز در این زمینه فوقالعاده پیکربندی شده. لاراول همچنین یک راه ساده برای سازماندهی منطق مجوزها و دسترسی و کنترل به منابع فراهم می کنه.
لاراول دو راه اصلی برای اعمال Authorization فراهم کرده که یکی دروازه ها (gate) و دیگری سیاست هاست. دروازه ها و سیاستها رو مثل مسیرها و کنترلرها فرض کنید. دروازه ها یک دریچه ی ساده براساس رویکرد Authorization فراهم میکنند درحالی که سیاستها مثل کنترلرها منطق اون ها رو در اطراف یک مدل یا resource خاص دسته بندی می کنند.
برای درک بهتر این قابلیت فوقالعاده به این مثال توجه کنید :
//app/Role
class Role extends Model
{
protected $fillable = [
'name', 'slug', 'permissions',
];
protected $casts = [
'permissions' => 'array',
];
public function users()
{
return $this->belongsToMany(User::class, 'role_users');
}
public function hasAccess(array $permissions) : bool
{
foreach ($permissions as $permission) {
if ($this->hasPermission($permission))
return true;
}
return false;
}
private function hasPermission(string $permission) : bool
{
return $this->permissions[$permission] ?? false;
}
}
//app/User
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function roles()
{
return $this->belongsToMany(Role::class, 'role_users');
}
/**
* Checks if User has access to $permissions.
*/
public function hasAccess(array $permissions) : bool
{
// check if the permission is available in any role
foreach ($this->roles as $role) {
if($role->hasAccess($permissions)) {
return true;
}
}
return false;
}
/**
* Checks if the user belongs to role.
*/
public function inRole(string $roleSlug)
{
return $this->roles()->where('slug', $roleSlug)->count() == 1;
}
}
//app/Providers/AuthServiceProvider.php
public function registerPostPolicies()
{
Gate::define('create-post', function ($user) {
return $user->hasAccess(['create-post']);
});
Gate::define('update-post', function ($user, Post $post) {
return $user->hasAccess(['update-post']) or $user->id == $post->user_id;
});
Gate::define('publish-post', function ($user) {
return $user->hasAccess(['publish-post']);
});
Gate::define('see-all-drafts', function ($user) {
return $user->inRole('editor');
});
}
2 – کتابخانههای شی گرا
یکی از بهترین دلایلی که لاراول رو بهترین فریمورک PHP می کنه اینه که لاراول دارای کتابخانهها و خیلی از امکانات از پیش نصب شده بصورت شی گرا هست که در خیلی از فریمورک های محبوب دیگه وجود ندارند. یکی از کتابخانههای از پیش نصب شده ی لاراول کتابخانه ی Authentication هست. اگرچه پیادهسازی اون راحته اما قابلیتهای بسیار پیشرفته ای داره, مثل چک کردن کاربران فعال, Bcrypt hashing, بازیابی پسورد, CSRF – Cross-site Request Forgery و رمزگذاری.
همچنین پکیج های خارجی فوقالعادهای توسط جامعه ی توسعه دهندگان لاراول وجود داره که هرکدوم می تونه تأثیر مهمی در پروژه لاراولی ما داشته باشه. محبوبترین این پکیج ها شامل یک پکیج به نام Html برای ساخت Form هاست و یا پکیج laravel-debugbar که وظیفه ی دیباگ کردن اپلیکیشن شما رو برعهده می گیره. از طریق این سایت میتونید به این پکیج ها دسترسی داشته باشید.
3 – دستورات Artisan
لاراول یک ابزار آماده به نام Artisan رو فراهم می کنه. یک توسعهدهنده باید معمولاً توسط دستورات command line با فریمورک لاراول ارتباط برقرار کنه و محیط پروژه رو مدیریت کنه. لاراول یک ابزار داخلی به نام Artisan برای وارد کردن و اجرای اینجور دستورات فراهم کرده که کار رو آسان می کنه. این ابزار به ما اجازه میده اکثر این وظایف کدنویسی تکراری رو که اکثر برنامه نویس ها از انجام دستی اونها خودداری می کنند, به راحتی انجام بدیم.
لیست دستورات مهم Artisan در لاراول 4 و 5
4 – پشتیبانی از MVC
دلیل دیگری که باعث میشه لاراول بهترین فریمورک PHP بشه اینه که ساختار MVC رو پشتیبانی میکنه و مثل فریمورک Symfony در وضوح رابطه بین منطق و ظاهر اطمینان وجود داره. MVC در بهبود کارایی کمک می کنه و اجازه میده مستندات بهتری داشته باشیم و همچنین دارای ویژگی های داخلی مختلف است. در این شکل میتونید مشاهده کنید که MVC در لاراول به چه شکلی کار می کنه :
5 – امنیت
درحین توسعه ی اپلیکیشن هرکسی باید چندین روش برای امن کردن اپلیکیشن خود استفاده کنه. لاراول در زمینه امنیت بسیار حساس هست. اون پسوردها رو بصورت کدگذاری شده استفاده می کنه که یعنی پسوردها و متن های امنیتی هیچ وقت نباید بصورت متن خالص در دیتابیس ذخیره بشوند. لاراول از الگوریتم Bcrypt hashing برای تولید یک شکل امن و رمزگذاری شده از پسوردها استفاده می کنه. لاراول از حالات آماده ی SQL استفاده می کنه که باعث میشه حملات Injection به سایت ناموفق باشه. علاوه بر این لاراول یک راه راحت برای جلوگیری از نفوذ کاربران با تگ هایی مثل <script> فراهم می کنه. اینجا یک سری ویژگیهای امنیتی که لاراول داره لیست شده :
6 – Migration در دیتابیس
یک مساله ی اذیت کننده برای توسعه دهندگان آینه که همیشه دیتابیس رو بین ماشینهای توسعه همگام سازی کنه. با استفاده از Laravel Migration این کار بسیار سادست, بعد از ساعتها کار شما ممکنه تغییرات زیادی روی دیتابیس انجام بدید و به نظر ما MySQL Workbench گزینه مناسبی برای همگام سازی دیتابیس ها بین ماشینهای توسعه نیست. با وارد شدن به Migration از اونجایی که تمام کارهای دیتابیس در seed ها و migration ها اتفاق میافته, شما میتونید به راحتی تغییرات رو از طریق migrate کردن به یک ماشین توسعه دیگر منتقل کنید. این هم یکی از دلایل مهمی هست که لاراول رو بهترین می کنه!
برای استفاده از این قابلیت کافیه توسط دستورات Artisan اون migration های مورد نظرتون رو بسازید و تغییرات دلخواه تون رو در فایلها بدید و در آخر دستور php artisan migrate رو بزنید!
7 – منابع آموزشی فوقالعاده
شما یا توسعه دهندگان شما نیاز دارند تا برای ارائه ی بهتر آموزش ببینند. برخلاف فریمورک های دیگر (مثل Yii یا CackePHP) لاراول وبسایت laracast رو پیشنهاد میده که شامل آموزشهای ویدیویی رایگان و پولی مختلف هست. تمام ویدیوها توسط Jeffery Way ساخته شده که یک توسعهدهنده ی باتجربه و حرفهای هست. این آموزشها شامل نکات مهم و ضروری برای کار با لاراول هستند و میتونه بسیار به توسعه دهندگان این فریمورک کمک کنه. کیفیت ویدیوها بسیار عالی هستند و محتوای آموزشها واضح و پرمعنی هستند.
علاوه بر این منابع متنوع آموزشی با زبانهای مختلف در سراسر وب پیدا می شوند. وبلاگ ها و وبسایت های آموزشی زیادی هستند که روی لاراول تمرکز کردهاند و با توجه به تعداد بالای توسعه دهندگانی که از این فریمورک استفاده میکنند کلاسهای آموزشی بصورت حضوری یا غیرحضوری هم وجود دارد. همچنین ویدیوهای لاراولی سایت راکت در اختیار شماست تا بتوانی بصورت کامل این فریمورک رو یاد بگیرید
8 – موتور قالب بندی Blade
موتور قالب بندی Blade در لاراول بسیار بصری هست و کمک می کنه تا با کدهای معمول PHP/HTML رو بسیار بهتر استفاده کنیم, این یکی از بهترین ویژگیهای فریمورک هست. اگر شما با مشکلاتی در موتورهای قالب رو به رو شده باشید, این موضوع رو بهتر درک می کنید.
برای مثال شما میتونید از شرط ها در هر قسمت از کد blade استفاده کنید و مثلاً شرطی رو تعیین کنید و اگر اون شرط درست بود فلان کلاس به div مورد نظرتون اضافه بشه یا اگر درست نبود یک کلاس دیگه اضافه بشه. یا از حلقه ها loop استفاده کنید و اطلاعات دیتابیس رو به راحتی و طوری که ترجیح میدید در view نمایش بدید.
در Blade کار همیشه راحت و سریعتر پیش میره :
قابلیتهای فوقالعادهای که نام بردیم برای پی بردن به اینکه چرا لاراول بهترین فریمورک PHP در سال 2017 هست کافیه. به همین دلایل هست که توسعه دهندگان PHP این فریمورک رو به عنوان فریمورک اصلی در پروژه های مختلف انتخاب می کنند.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید