Chúng ta đã cài đặt thành công CakePHP qua bài viết Hướng dẫn cài đặt CakePHP, và trong bài viết này chúng ta sẽ cùng tìm hiểu về cấu trúc thư mục và một số quy ước đặt tên khi tạo file, tạo thư mục, các class… trong Cakephp framework.

Chúng ta sử dụng lại project cakephp đã tạo ở bài Hướng dẫn cài đặt CakePHP

2015-08-22_140736

 

Như trong hình trên ta thấy có các thư mục (các file thì cứ để mặc định)như sau:

  • app: đây là phần quan trong nhất chứa tất cả các mã nguồn của chúng ta(mục đích chính của bài viết này)
  • lib: trong này chứa phần mã nguồn, thư viện của Cakephp. Hiển nhiên chúng ta không nên đụng tới nếu không rõ về Cakephp.
  • plugins: chứa các thành phần mở rộng của ứng dụng(sẽ nói rõ hơn ở một bài khác).
  • vendors: là các ứng dụng bên thứ 3 có thể là phpmail, facebook…(sẽ nói rõ hơn ở một bài khác).

Trong bài này ta tìm hiểu trong thư mục app:

2015-08-26_150410

 

  • Config: thư mục chứa file cấu hình của hệ thống như: database, routes…
  • Console: hỗ trợ tự động sinh code qua command line(sẽ có một bài riêng).
  • Controller: chứa các controller và Component(tự tạo) quan trọng là file AppController.php
  • Lib: thư viện tự tạo của chúng ta
  • Locale: chứa file ngôn ngữ , sử dụng cho ứng dụng đa ngôn ngữ.
  • Model: chứa file Model và behavor, datasource
  • Plugin: chứa các gói mở rộng cho ứng dụng.
  • Test: tên thư mục đã nói lên tất cả rồi^^
  • tmp: đây là nơi chứa các tập tin tạm được tự động sinh ra của ứng dụng.
  • Vendor: chứa ứng dụng của bên thứ 3 giống thư mục vendors ở bên ngoài.
  • View: chứa các file giao diện hiển thị và Helper
  • webroot: chứa các tập tin tài liệu về hình ảnh, javascript, css, …

Trong các thư mục trên các thư mục nào bôi đen nghĩa là quan trọng, chúng ta sẽ sử dụng thường xuyên với chúng khi viết một ứng dụng bằng Cakephp.

Ngoài ra còn 2 thư mục quan trọng nữa là Component và Helper

  • Component là những thành phần mở rộng trong CakePHP, cho phép người sử dụng một cách linh hoạt và có thể tùy biến lại. Trong Cakephp có hỗ trợ một số component mà ta thường dùng là: ACL, mail, time…. chúng được sử dụng trong controller. Ngoài ra chúng ta cũng có thể viết một component của riêng mình để sử dụng(mình sẽ hướng dẫn một bài riêng).
  • Helper: là tập hợp các thư viện, công thức,… để có thể sử dụng bất cứ đâu trong view. Cakephp hỗ trợ sẳn các helper như: form, html, ajax, number, session…Cũng như compoment ta cũng có thể viết helper cho riêng mình(sẽ có một bài riêng).

Quy ước đặt tên trong CakePHP

  1. Tên file, tên class:
    – Tên file sử dụng chữ thường, viết hoa chữ cái phân cách các từ: CategoriesController.php, DataComponent.php, Category.php, SessionHelper.php.
    – Tên class viết hoa chữ cái đầu tiên của từ.
    – Xem cách đặt tên ở bảng sau:

    Tên file Class
    Controller CategoriesController.php CategoriesController
    Component DataComponent.php DataComponent
    Model Category.php Category
    Helper SessionHelper.php Session
  2. Quy ước về cơ sở dữ liệu và Model:
    – Tên các class trong Model phải ở dạng số ít và viết hoa chữ cái đầu tiên: Category, User…
    – Tên các bảng trong database phải là số nhiều: categories, users…
    – CakePHP không hỗ trợ khóa chính gồm nhiều cột. Nếu muốn 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.
    – Khóa chính mặc định trong CakePHP là cột id, kiểu int, tự tăng. Tuy nhiên, có thể định nghĩa lại khóa chính thông qua biến $primaryKey trong model.
    – 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 2 bảng categories và lessons, bảng lessons sẽ có khóa ngoại đến bảng categories là category_id.
  3. Quy ước về Controller:
    – Tên lớp của controller phải ở dạng số nhiều viết hoa chữ cái đầu tiên, và phía sau cùng là chữ Controller.
    – Ví dụ: ta có file CategoriesController.php thì tên class trong file này là:

    [code language=”php”]
    <?php
    class CategoriesController extends AppController{
    //Code here
    }
    ?>
    [/code]

  4. Quy ước về View: trong view được chia làm 2 cấp độ thư mục và file:
    – Tên thư mục phải tương ứng với controller.
    – Tên file của View phải tương ứng với các phương thức trong controller đó.
    – Đuôi mở rộng của các file trong view là .ctp
  5. Ví dụ : giả sử trong database ta có một bảng tên categories ta sẽ có các Model, Controller, View như sau
    – Model: sẽ có file Category.php
    – Controller: sẽ có file CategoriesController.php
    – View: sẽ có thư mục Categories
    – Thêm 2 phương thức vào trong CategoriesController.php nội dung như sau:

    [code language=”php”]
    <?php
    class CategoriesController extends AppController{
    public function menu(){

    }
    public function index(){

    }
    }
    ?>
    [/code]

– Trong thư mục Categories chúng ta phải tạo thêm 2 file là index.ctp và menu.ctp

Mình xin kết thúc bài này tại đây, mục đích bài là giới thiệu về cấu trúc thư mục, file cũng như cách đặt tên của chúng trong CakePHP, bài tiếp theo sẽ là một demo đơn giản bằng cách tạo ra các Model, Controller và View

[thongbao]

  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.

[/thongbao]

[Cakephp] Bài 3 – Cấu trúc thư mục và các quy ước đặt tên