برای یادگیری لاراول بصورت جرفه ای لازم است تا ابتدا مقدمات آن را به خوبی و کاملا ساده فرا بگیرید. این امر توسط آموزش لاراول تهیه شده توسط آکادمی وب یار برای شما دوستان فراهم گردیده است.
نامگذاری Controller ها
نام کنترلرها باید بصورت مفرد (بدون s جمع)، بدون فاصله بین کلمات باشند و با کلمه «Controller» تمام شوند.
همچنین، هر کلمه باید با حروف بزرگ نوشته شود (یعنی BlogController، نه blogcontroller).
نمونه صحیح
BlogController, AuthController, UserController
نمونه اشتباه
UsersController
UsersController به خاطر جمع بودن Users و Users به خاطر نداشتن پسوند Controller
قراردادهای نامگذاری متد در کنترلرها
قراردادهای نامگذاری متد در کنترلرها مشابه قرارداد مدل از نامگذاری camelCase (نویسه اول با حروف کوچک) پیروی می کند.
از طرفی، برای عملیات معمولی CRUD، باید از یکی از نام های متد زیر استفاده شود.
نام گذاری جداول پایگاه داده در لاراول
جداول پایگاه داده می بایست با حروف کوچک و استفاده اززیرخط برای جدا کردن کلمات (snake_case) و به صورت جمع باشد.
نمونه صحیح
posts, project_tasks, uploaded_images
نمونه اشتباه
all_posts, Posts, post, blogPosts
جداول میانی – pivot
برای جداول میانی باید تمام حروف کوچک باشد، هر مدل به ترتیب حروف الفبا، با یک خط زیر (snake_case) از هم جدا شوند.
نمونه صحیح
post_user, task_user
نمونه اشتباه
users_posts, UsersPosts
نام ستون های جدول
نام ستون های جدول باید با حروف کوچک و بصورت snake_case (خط زیر بین کلمات) باشد. و این که نباید به نام جدول اشاره شود.
نمونه صحیح
post_body, id, created_at
نمونه اشتباه
blog_post_created_at, forum_thread_title, threadTitle
کلید اصلی
بصورت معمول باید کلمه id به عنوان شناسه یا کلید اصلی درنظر گرفته شود.
کلید خارجی
کلیدهای خارجی باید نام مدل (بصورت مفرد) باشند و \’_id\’ به آن اضافه شده باشد (با فرض اینکه کلید اصلی در جدول اصلی \’id\’ باشد).
نمونه صحیح
comment_id, user_id
متغیرها
متغیرهای عادی معمولاً باید بصورت camelCase (اولین کاراکتر کوچک) باشند.
نمونه صحیح
$users
$bannedUsers
نمونه اشتباه
$all_banned_users
$Users
اگر متغیر حاوی یک آرایه یا مجموعه ای از چندین آیتم باشد، نام متغیر باید به صورت جمع باشد. در غیر این صورت باید به صورت مفرد تعریف شود.
نمونه صحیح
$users = User::all();// چند آیتم
$user = User::first() // فقط یک شی
قراردادهای نامگذاری مدل ها
مدل ها از مواردی است که هسته سیستم ها مبتنی برآنها بنا می شود پس در راهنمای جامع قراردادهای نامگذاری لاراول به آنها پرداخته ایم تا بهتر بتوانید سیستم های دیگر را بررسی کنید.
نام گذاری مدل ها در لاراول
یک مدل باید به صورت مفرد، بدون فاصله بین کلمات و با حروف بزرگ باشد.
نمونه صحیح
`User` (`\\App\\User` یا `\\App\\Models\\User` و ...) و `ForumThread`و `Comment`.
نمونه اشتباه
Users, ForumPosts, blogpost, blog_post, Blog_posts
به طور کلی، مدلهای شما باید بتوانند به طور خودکار جدول پایگاه داده را به روش زیر مشخص کنند:
<?php /** * Get the table associated with the model. * * @return string */ public function getTable() { if (! isset($this->table)) { return str_replace( \'\\\\\', \'\', Str::snake(Str::plural(class_basename($this))) ); } return $this->table; }
اما مطمئناً میتوانید $this->table
را در مدل خود تنظیم کنید. در بخش قراردادهای نامگذاری جداول به این موضوع اشاره شد.
توصیه می کنم با اجرای php artisan make:model -m ForumPost
همزمان مدل ها و مایگریشن های مدل را ایجاد کنید. این فایل مایگریشن را به طور خودکار تولید می کند (در این مورد، برای نام جدول پایگاه داده \”forum_posts\” در نظر گرفته می شود).
خواص مدل
خواص مدل باید با حروف کوچک و بصورت snake_case در نظر گرفته شوند. همچنین، قراردادهای نام ستون های جدول پیروی می کنند.
نمونه صحیح
$this->updated_at, $this->title
نمونه اشتباه
$this->UpdatedAt, $this->blogTitle
متدهای مدل
متدهای موجود در مدل ها در پروژههای لاراول، باید camelCase باشند (اولین کاراکتر آنها کوچک باشد).
نمونه صحیح
public function get(), public function getAll()
نمونه اشتباه
public function GetPosts(), public function get_posts()
روابط مدل
روابط بین مدل ها باید به صورت مفرد باشند و از همان قراردادهای نامگذاری متدهای مدل (بصورت معمول) پیروی کنند (camelCase).
روابط hasOne یا belongsTo (یک به چند)
نمونه صحیح
public function postAuthor(), public function phone()
روابط hasMany ، belongsToMany ، hasManyThrough (یک به چند)
این روابط (مانند یک به چند قبلی) می بایست از قراردادهای نامگذاری پیروی کند، با این تفاوت که باید به صورت جمع نوشته شود.
نمونه صحیح
public function comments(), public function roles()
روابط چند ریختی (Polymorphic)
روابط چند ریختی ممکن است کمی ناخوشایند نامگذاری شود.
در حالت ایده آل، شما میتوانید مانند زیر نامگذاری را انجام دهید:
<?php public function category() { return $this->morphMany(\'App\\Category\', \'categoryable\'); }
لاراول به طور پیش فرض، بنا را براین می گذارد که یک categoryable_id
و categoryable_type
وجود دارد.
اما میتوانید از سایر پارامترهای اختیاری برای morphMany
برای تغییر پیشفرضها استفاده کنید.
public function morphMany($related, $name, $type = null, $id = null, $localKey = null)
شاید به نظر بیاید که لازم نیست به این جزئیات توجه شود اما اگر همین جزئیات کم را در نظر نگیرید برنامه نویسان دیگر در تیم شما دچار سر در گمی خواهند شد. پس در راهنمای جامع قراردادهای نامگذاری لاراول به آنها پرداخته ایم تا بهتر بتوانید سیستم های دیگر را بررسی کنید.
قراردادهای نامگذاری Trait ها
برای نامگذاری Trait ها می بایست از کلمات صفت استفاده گردد.
نمونه صحیح
Notifiable, Dispatchable
قراردادهای نامگذاری Blade ها
فایل های Blade باید با حروف کوچک و بصورت snake_case (خط زیر بین کلمات) تعریف گردند.
نمونه صحیح
all.blade.php, all_posts.blade.php