برنامه نویسی توسعه وبسایت طراحی وبسایت نگهداری وبسایت
راهنمای جامع قراردادهای نامگذاری لاراول

راهنمای جامع قراردادهای نامگذاری لاراول

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

برای یادگیری لاراول بصورت جرفه ای لازم است تا ابتدا مقدمات آن را به خوبی و کاملا ساده فرا بگیرید. این امر توسط آموزش لاراول تهییه شده توسط آکادمی وب یار برای شما دوستان فراهم گردیده است.

نامگذاری Controller ها

نام کنترلرها باید بصورت مفرد (بدون s جمع)، بدون فاصله بین کلمات باشند و با کلمه «Controller» تمام شوند.

همچنین، هر کلمه باید با حروف بزرگ نوشته شود (یعنی BlogController، نه blogcontroller).

نمونه صحیح

BlogController, AuthController, UserController

نمونه اشتباه

UsersController 

UsersController به خاطر جمع بودن Users و Users به خاطر نداشتن پسوند Controller

قراردادهای نامگذاری متد در کنترلرها

قراردادهای نامگذاری متد در کنترلرها مشابه قرارداد مدل از نامگذاری camelCase (نویسه اول با حروف کوچک) پیروی می کند.

از طرفی، برای عملیات معمولی CRUD، باید از یکی از نام های متد زیر استفاده شود.

متدمسیرنام متدنام مسیر
GET/postsindex()posts.index
GET/posts/createcreate()posts.create
POST/postsstore()posts.store
GET/posts/{post}show()posts.show
GET/posts/{post}/editedit()posts.edit
PUT/PATCH/posts/{post}update()posts.update
DELETE/posts/{post}destroy()posts.destroy
جدول 1 – نامگذاری متد در کنترلرها

نام گذاری جداول پایگاه داده در لاراول

جداول پایگاه داده می بایست با حروف کوچک و استفاده اززیرخط برای جدا کردن کلمات (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
لاراول 8 مقدماتی
لاراول 8 مقدماتی

کلید اصلی

بصورت معمول باید کلمه 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

Author

خسرو نظری

دانش آموخته کارشناسی ارشد فناوری اطلاعات (گرایش طراحی و تولید نرم افزار)، توسعه دهنده وب، مدیرپروژه های نرم افزاری، مدیرسیستم (sysadmin) لینوکس، مشاور مانیتورینگ و مدیر مجموعه تحلیل یار

Leave a comment

نشانی ایمیل شما منتشر نخواهد شد.