Convention Coding Trong Laravel - Tưởng Không Cần Mà ... - Hapolog
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 laravelSau đâ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.

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
Tham khảo
- https://webdevetc.com/blog/laravel-naming-conventions/
Từ khóa » Chuẩn Psr-2
-
PSR-2: Hướng Dẫn Mẫu Code đẹp - Viblo
-
PSR-2: Chuẩn Trình Bày Code PHP đẹp - Chung Nguyen Blog
-
PSR-2: Coding Style Guide - PHP-FIG
-
PSR-2 - Hướng Dẫn Trình Bày Code PHP
-
PSR-2: Hướng Dẫn Mẫu Code đẹp - Kipalog
-
Chuẩn Coding Convention Trong PHP Với PSR
-
PHP: Chuẩn PSR Trong PHP Là Gì | V1Study
-
Hướng Dẫn Format Code Theo Chuẩn PSR-2 Cho PHPStorm
-
Hướng Dẫn Viết Code PHP Chuẩn - PSR Tiêu Chuẩn Khi Lập Trình PHP
-
Viết Code Chuẩn PSR-2 Với SublimeLinter-phpcs - CODEVIVU.COM
-
Thử Sử Dụng Tool Convert PHP Code Theo Chuẩn PSR-1 Và PSR-2
-
Viết Code Chuẩn Là Gi ?, Chuẩn PSR-2 Là... - PHP Gà Chíp Chíp
-
Hướng Dẫn Phong Cách Viết Mã PHP Hiện đại - Tech Wiki
-
PHP Autoloading Là Gì? PSR-4 Autoloading Với Composer | TopDev