Chuẩn PSR-7 và Convention coding trong Laravel

2nd Nov 2022
Chuẩn PSR-7 và Convention coding trong Laravel
Table of contents

Conventions là gì

Thì conventions là tập hợp những nguyên tắc chung khi lập trình nhằm làm cho code dễ đọc, dễ hiểu, do đó dễ quản lý, bảo trì hơn. Cái này thì mỗi cty sẽ có quy định khác nhau nhưng đa phần sẽ theo các chuẩn PSR .

PSR là viết tắt của PHP Standards Recommendations , là những tiêu chuẩn khi code PHP, nó được cộng đồng PHP xây dựng và áp dụng theo.

  • Chuẩn PSR-0 nói về autoloading
  • Chuẩn PSR-1 về basic coding
  • Chuẩn PSR-2 về style coding
  • Chuẩn PSR-3 nói về logging
  • Chuẩn PSR-4 nói về autoloading : đây là phần cải tiến của PSR-0
  • Chuẩn PSR-7 nói về HTTP message

Các bạn có thể tìm hiểu thêm về các chuẩn này. trên mạng có rất nhiều bài viết về chuẩn này.

Ở khuôn khổ bài này thì sẽ có liên quan một chút ít về chuẩn PSR-2 về style coding.

Quy tắc đặt tên trong laravel

Sau đây sẽ là một vài quy tắc đặt tên được chấp nhận và đang được sử dụng bởi cộng đồng người dùng Laravel

Controller

Laravel dựa trên mô hình MVC nên sẽ không thể thiếu contreller. Và controller sẽ một vài quy tắc đặt tên sau:

  • Tên controller phải bắt đầu bằng một danh từ tiếng Anh và viết hoa.
  • Danh từ phải ở dạng số ít.
  • Không chứa dấu cách.
  • Luôn kết thúc bằng Controller.

Nên

UserController

Không nên

UsersController, user_controller, Users

Method của Controller

Chúng phải tuân theo các quy tắc tương tự như các method là phải viết theo quy tắc camelCase (chữ thường ký tự đầu tiên).

Ngoài ra, đối với các hoạt động CRUD thông thường, họ nên sử dụng một trong các tên phương thức sau.

Chuẩn PSR-7 và Convention coding trong Laravel

Database

Database sẽ theo một quy tắc khác:

  • Các bảng thường là chữ thường ngăn cách bỏi các dấu"_" (snake_case)
  • Thường là số nhiều

Nên

posts, project_tasks, uploaded_images

Không nên

Posts, post, blogPosts

Bảng trung gian (pivot)

Bảng trung gian sẽ tuân thủ các quy tắc đặt tên chung của database và có thêm 1 quy tắc đó là sắp xếp tên 2 bảng chính theo alphabet

Nên

post_user, task_user

Không nên

users_posts, UsersPosts

Tên các cột trong một bảng

Tên cột trong bảng phải ở dạng chữ thường, và chữ in hoa (dấu gạch dưới giữa các từ). Bạn không nên tham chiếu đến tên bảng.

Nên

post_body, id, created_at

Không nên

blog_post_created_at, forum_thread_title, threadTitle

Khóa chính

Đơn giản mặc định là id

Khóa phụ

Thường là tên bảng bỏ số nhiều và thêm (_id) (là tên model viết thường)

Nên

user_id, post_id

Biến

Đặt biến thì sẽ có một số quy tắc sau:

  • Dạng camelCase với chữ đầu viết thường
  • Nếu biến là một mảng hoặc là tập tập hợp của nhiều mục thì phải chuyển về dạng số nhiều

Nên

$postId, $users = User::all()

Không nên

$all_banned_users, $Users

Model

Với model thì thì sẽ có một số quy tắc sau:

  • Chứ cái đầu tiên của class là chữ hoa
  • Phải là danh từ dạng số ít

Nên

Flight

Không nên

flight, Flights

Tôi khuyên bạn nên dùng lệnh php artisan make:model NameOfModel để tạo file vì khi dùng lệnh này, hệ thống sẽ tự động tạo ra file migration.

Thuộc tính của Model

Chúng phải là chữ thường dạng snake_case. Chúng cũng phải tuân theo các quy ước tương tự như tên cột trong bảng.

Nên

$this->updated_at, $this->title

Không nên

$this->UpdatedAt, $this->blogTitle

Model Methods

Cũng giống như các Method khác trong Laravel project nó cũng sẽ được viết kiểu camelCase và chữ cái đầu viết thường

Nên

public function get(), public function getAll()

Không nên

public function GetPosts(), public function get_posts()

Quan hệ trong Model

hasOne hoặc belongsTo relationship (one to many)

Chúng phải ở dạng số ít và tuân theo các quy ước đặt tên giống như các phương pháp mô hình thông thường (camelCase, nhưng với chữ cái đầu tiên viết thường)

Nên

public function postAuthor(), public function phone()

hasMany, belongsToMany, hasManyThrough (one to many)

Giống như quy ước đặt tên của các Method, tuy nhiên, nó phải ở số nhiều.

Nên

public function comments(), public function roles()

Polymorphic relationships

Khá khó để đặt tên chính xác. Bạn có thể thử đặt tên theo phương pháp sau:

public function category()
{
    return $this->morphMany('App\Category', 'categoryable');
}

Và Laravel sẽ mặc định cho rằng có một categoryable_id và categoryable_type.

Nhưng bạn có thể sử dụng các tham số tùy chọn khác cho morphMany( public function morphMany($related, $name, $type = null, $id = null, $localKey = null)) để thay đổi các giá trị mặc định.

Traits

Phải là tính từ tiếng anh

Nên

Notifiable, Dispatchable

Blade view files

Các tệp Blade phải ở dạng chữ thường, snake_case (gạch dưới giữa các từ).

Nên

all.blade.php, all_posts.blade.php
Bạn thấy bài viết này như thế nào?
1 reaction

Add new comment

Image CAPTCHA
Enter the characters shown in the image.

Related Articles

Danh sách này có 4 sản phẩm nên chưa cần phân trang, nếu số lượng sản phẩm lên đến vài chục sản phẩm

Hiện nay kiến trúc Microservices đang là chủ đề được cộng đồng Developer vô cùng quan tâm

Hôm nay chúng ta cùng tìm hiểu về Eloquent trong Laravel với mối quan hệ nhiều - nhiều (many to many relationship)

Kiểm soát hợp lí truy cập nội dung trang web là yếu tố quyết định trong việc điều hành một máy chủ bảo mật.

Trong lập trình web, authorization (phân quyền) là chức năng vô cùng quan trọng và không thể thiếu