Cấu trúc thư mục php

Trong bài trước tôi đã hướng dẫn bạn cách cài đặt Laravel, trong bài này chúng ta cùng tìm hiểu cấu trúc các thư mục trong Laravel Framework.

Với Laravel Framework, bạn không nhất thiết phải tuân thủ cấu trúc thư mục mặc định của Laravel. Bạn hoàn toàn có thể tái cấu trúc lại thư mục, miễn sao các Class tuân thủ nguyên tắc autoload của Composer.

Dưới đây là chức năng của các thư mục – file trong Laravel 8

Thư mục app

Thư mục app chứa tất cả các Class của project

Thư mục app/Console

Thư mục chứa các tập tin định nghĩa các câu lệnh trên artisan

Thư mục app/Exceptions

Thư mục chứa các tập tin quản lý, điều hướng lỗi

Thư mục app/Http/Controllers

Thư mục chứa các controller của project

Thư mục app/Http/Middleware

Thư mục chứa các tập tin lọc và ngăn chặn các requests

Thư mục app/Providers

Thư mục chứa các file thực hiện việc khai báo service và bind vào trong Service Container

Thư mục app/Models

Thư mục chứa các model của project [Với Laravel 8 sẽ có sẵn thư mục Models]

Thư mục bootstrap

Thư mục chứa những file khởi động của framework và những file cấu hình auto loading, route, và file cache

Thư mục config

Thư mục chứa tất cả những file cấu hình

Thư mục database

Thư mục chứa 2 thư mục migration [tạo và thao tác database] và seeds [tạo dữ liệu mẫu]

Thư mục database/factories

Thư mục chứa các file định nghĩa các cột bảng dữ liệu để tạo ra các dữ liệu mẫu

Thư mục database/migrations

Thư mục chứa các file tạo và chỉnh sửa dữ liệu

Thư mục database/seeds

Thư mục chứa các file tạo dữ liệu thêm vào CSDL

Thư mục public

Thư mục chứa file index.php giống như cổng cho tất cả các request vào project, bên trong thư mục còn chứa file JavaScript, và CSS

Thư mục resources

Thư mục chứa những file view và raw, các file biên soạn như LESS, SASS, hoặc JavaScript. Ngoài ra còn chứa tất cả các file language trong project.

Thư mục resources/views

Thư mục chứa các file view xuất giao diện người dùng

Thư mục routes

Thư mục chứa tất cả các điều khiển route [đường dẫn] trong project.

Chứa các file route sẵn có: web.php, channels.php, api.php, và console.php

Thư mục routes/api.php

Cấu hình các route liên quan đến API

Thư mục routes/web.php

Cấu hình các route liên quan đến web [Có giao diện người dùng]

Thư mục storage

Thư mục chứa các file biên soạn blade templates của bạn, file based sessions, file caches, và những file sinh ra từ project.

  • Thư mục app, dùng để chứa những file sinh ra từ project.
  • Thư mục framework, chứa những file sinh ra từ framework và caches.
  • Thư mục logs, chứa những file logs.
  • Thư mục /storage/app/public, lưu những file người dùng tạo ra như hình ảnh.

Thư mục tests

Thư mục chứa những file tests

Thư mục vendor

Thư mục chứa các thư mục, file thư viện của Composer

File .env

File chứa các config chính của Laravel

File artisan

File thực hiện lệnh của Laravel

File .gitattributes, .gitignore

File dùng để xử lý git

File composer.json, composer.lock, composer-setup.php

File sinh ra của composer

File package.json

File chứa các package cần dùng cho projects

File phpunit.xml

File phpunit.xml, xml của phpunit dùng để testing project

File webpack.mix.js

File dùng để build các webpack

Kết luận

Trên đây, tôi đã chia sẻ cấu trúc các thư mục của Laravel Framework [Phiên bản 8]. Nếu có bất kỳ câu hỏi nào hãy comment phía dưới bài viết này

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

 

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:

 

  • 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 fileClassControllerCategoriesController.phpCategoriesControllerComponentDataComponent.phpDataComponentModelCategory.phpCategoryHelperSessionHelper.phpSession
  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à:
  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:

– 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

Chủ Đề