CakePHP 3 Các quy ước đặt tên

Ở bài này sẽ là các quy ước về cách đặt tên cho file, class, database, model, view, controller trong cakephp 3:

Quy ước cho Controller

Tên lớp của Controller là số nhiều, kết thúc là text ‘Controller’. UsersController và ArticlesController ở các bài trước là ví dụ cụ thể nhất.

Chúng ta có thể truy cập controller và action thông qua url. Ví dụ: /users/view, tương ứng với controller(UsersController) và action ( view() ). Action phải ở dạng public mới có thể truy cập, còn protected hoặc private thì không thể

URL cho Controller, Action

Với url là các chữ thường với công thức: controller/action.

Ví dụ:

  1. UsersController(UsersController.php) có action index() được truy cập bằng http://abc.com/users hoặc http://abc.com/users/index
  2. ArticleCategoriesController(ArticleCategoriesController.php) có action viewAll() được truy cập bằng http://abc.com/article-categories/view-all

Khi tạo liên kết bằng this->Html->link(), chúng ta có thể sử dụng các quy ước sau cho mảng url:


$this->Html->link('link-title', [
    'prefix' => 'MyPrefix',
    'plugin' => 'MyPlugin',
    'controller' => 'ControllerName',
    'action' => 'actionName'
]

Để biết thêm thông tin về URL CakePHP 3 và cách xử lý tham số, chúng ta sẽ có bài hướng dẫn khác.

Các quy ước về tên file và tên class

Xem ví dụ là dễ hiểu nhất:

Class Controller LatestArticlesController <=> LatestArticlesController.php
Class Component MyHandyComponent <=> MyHandyComponent.php
Class Table OptionValuesTable <=> OptionValuesTable.php
Class Entity OptionValue <=> OptionValue.php
Class Behavior SpecialFunkableBehavior <=> SpecialFunkableBehavior.php
Class View SuperSimpleView <=> SuperSimpleView.php
Class Helper BestEverHelper <=> BestEverHelper.php

Quy ước cho database

Tên table tương ứng với các model trong CakePHP là số nhiều và có dấu (_) ngăn cách giữa các từ. Ví dụ: users, article_clists và user_favorite_pages.

Tên Field/Column có hai hoặc nhiều từ và có dấu (_) ngăn cách giữa các từ. Ví dụ: first_name.

Các khóa ngoại trong các mối quan hệ hasMany, belongsTo/hasOne được mặc định là tên (số ít) của table theo sau là _id. Vì vậy, nếu Users có nhiều bài viết(Articles), table articles sẽ có khóa ngoại là user_id. Đối với một bảng như article_categories khóa ngoại sẽ là article_category_id.

Khi Join, sử dụng BelongsToMany giữa các models, nên được đặt tên theo các bảng tham gia joins và thứ tự trước sau sẽ theo bảng chữ cái (articles_tags thay vì tags_articles).

Ngoài việc sử dụng số nguyên tự động tăng làm primary keys, bạn cũng có thể sử dụng các cột UUID. CakePHP sẽ tự động tạo các giá trị UUID bằng cách sử dụng (Cake\Utility\Text::uuid()) bất cứ khi nào bạn lưu bản ghi mới bằng phương thức Table :: save ().

Quy ước cho Model

Tên class Model là số nhiều kết thúc là Table. UsersTable, ArticleCategoriesTable, and UserFavoritePagesTable là tất cả các ví dụ tương ứng với các tables: users ,article_categories and user_favorite_pages.

Tên class Entity là số ít và không có hậu tố. User, ArticleCategory, and UserFavoritePage là tất cả các ví dụ tương ứng với các tables: users ,article_categories and user_favorite_pages.

Quy ước về View

Các file view được đặt tên theo các function trong controller mà chúng hiển thị. Hàm viewAll () của class ArticlesController tương ứng với src/Template/Articles/view_all.ctp.
Công thức là src/Template/Controller/underscored_function_name.ctp.

Tóm tắt

Bằng cách đặt tên các thành phần của ứng dụng theo các quy ước CakePHP, chúng ta có thể tiết kiệm thời gian, công sức khá nhiều cho việc bảo trì, vận hành ứng dụng…

Ví dụ cụ thể:
Database table: articles
Table class: ArticlesTable, trong src/Model/Table/ArticlesTable.php
Entity class: Article, trong src/Model/Entity/Article.php
Controller class: ArticlesController, trong src/Controller/ArticlesController.php
View template, trong src/Template/Articles/index.ctp

URL: http://abc.com/articles sẽ gọi đến action index() trong ArticlesController, và trong action này sẽ sử dụng model Articles để lấy dữ liệu, rồi đưa ra view.

Đây là các quy ước để chúng ta có thể thống nhất theo chuẩn của CakePHP. Bài sau sẽ là cấu trúc các thư mục trong CakePHP 3

Tham khảo: https://book.cakephp.org/3.0/en/intro/conventions.html

Kết luận

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.

Nongdanit.info
[Cakephp 3] Bài 5 – Quy ước đặt tên
Tagged on: