Thứ Năm, 18 tháng 6, 2015

Một số quy tắc trong CakePHP Framework

Tiếp tục với series CakePHP Framework, trong bài này chúng ta sẽ đi tìm hiểu một số quy tắc trong CakePHP Framework giúp cho các bạn có thể nắm bắt và sử dụng CakePHP một cách linh hoạt nhất.

Quy tắc đặt tên file, tên class

  • Tên File sử dụng chữ in thường và phân cách các từ bằng dấu gạch dưới (_)  ví dụ: my_file.php
  • Tên Class phải viết hoa chữ cái đầu tiên của từ ví dụ: MyClass
  • Quy tắc trong Model và Cơ sở dữ liệu (CSDL)


      CakePHP không hỗ trợ khóa chính gồm nhiều cột. Nếu bạn muốn thao tác trực tiếp kết nối (join) các bảng, hãy truy vấn trực tiếp hoặc thêm một khóa chính thay cho khóa nhiều cột.

Tên bảng tương ứng với các model của CakePHP ở dạng số nhiều và sử dụng gạch dưới (_). Ví dụ ứng với model  CategoriesProducts là categories_products. Bạn có thể dùng thư viện Inflector có sẵn trong CakePHP để kiểm tra dạng số ít/số nhiều của các từ.


Các khóa ngoại trong các quan hệ có tên mặc định là số ít của tên bảng kèm theo_id ở cuối cùng. Ví dụ với quan hệ NewsCategory có nhiều News, bảng news sẽ có khóa ngoại đến bảng news_categories lànews_category_id.

 Các bảng liên kết được sử dụng trong quan hệ nhiều-nhiều đặt tên bằng cách kết nối các tên model theo thứ tự abc, vì vậy tên đúng sẽ là apples_zebras chứ không phải là zebras_apples. Do đó, ta phải thêm một khóa khác có tên là id

Khóa chính mặc định trong CakePHP là cột id, kiểu int, tự tăng. Tuy nhiên, bạn cũng có thể định nghĩa lại khóa chính cho bảng thông qua biến $primaryKey trong model. Thay cho việc sử dụng kiểu int, auto-increment làm khóa chính, bạn có thể sự dụng char(36) hoặc binary(36), khi đó CakePHP sẽ tự động tạo ra UUIDs để làm khóa khi ta thêm mới một record. UUID là một chuỗi gồm 32 byte, tương ứng với 36 ký tự.

Quy tắc trong Controllers

  • Tên lớp của controller đặt theo dạng số nhiều.
  • Tuân theo CamelCased (viết hoa chữ cái đầu tiên của mỗi từ) và cuối tên phải có chữ “Controller”.


Ví dụ: Tạo một controller có tên “products” thì class sẽ có tên là ProductsController.
<?php
   Class ProductsController extends AppController{
     //Code...
   }
?>
Khi một phương thức trong Controller được đặt tên bắt đầu với với dấu “_”ở phía trước, bạn sẽ không thể truy xuất nó từ bên ngoài mà chỉ có thể truy xuất trong controller đó (hay phạm vi là private).

Ví dụ:
<?php
  Class ProductsControllers extends AppController{
    function index(){
      //Code...
    }

    function _get_product(){
      //Code...
    }

    function viewProduct(){
      $this->_get_product();
    }
  }
?>

Quy tắc trong Views

  • Giả sử trong Controller ta có controller ProductsController gồm 2 function get_all() và get_a_record(). Thì trong views (trong thư mục app/view/products ) ta cũng phải có 2 file get_all.ctp và get_a_record.ctp.


  • Mặc định, nếu trong controller ProductsController có phương thức view(), khi gọi function view() trên trình duyệt (http://localhost/products/view) thì Controller sẽ tìm file view.ctp trong app/views/news/view.ctp

* Tuy nhiên, để dễ dàng hơn trong việc lap trinh web, bạn có thể gọi một file view khác không phải là view.ctp bằng lệnh:
<?php
   $this->render('ten_view');
?>

Nguồn: the gioi web

SHARE THIS

0 nhận xét:

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.