01/10/2018, 16:59

MVC CMS - Cấu trúc folder CMS

Với việc bùng nổ các Framework như hiện này hầu hết các bạn có định hướng nghề ngiệp của mình theo cái nghề lập trình hoặc bạn chỉ muốn học lập trình để biết và các bạn đang muốn trong một thời gian ngắn học thành thạo một Framework nào đó. Những dòng suy nghĩ đó theo bản thân mình thì nó hơi lệch ...

Với việc bùng nổ các Framework như hiện này hầu hết các bạn có định hướng nghề ngiệp của mình theo cái nghề lập trình hoặc bạn chỉ muốn học lập trình để biết và các bạn đang muốn trong một thời gian ngắn học thành thạo một Framework nào đó. Những dòng suy nghĩ đó theo bản thân mình thì nó hơi lệch lạc chút. Các bạn chỉ muốn tìm hiểu một chút về PHP và tiến thẳng vào học một cái Framework điều đó là không thể. Hoặc có thể hiểu theo ý "Tuy nhanh mà chậm". Có những bạn hỏi mình với những câu hỏi đại loại như.

  • Anh ơi em muốn học lập trình và em nên học Framework nào?
  • Anh ơi em nên học theo Framework nào đầu tiên?
  • Học Framework có khó không anh?
  • Em đang học PHP và em cảm thấy học OPP khó quá?

Thì theo cá nhân mình thì dù bạn có học một Framework nào đi nữa thì những kiến thức cơ bản về lâp trình hướng đối tượng, hay MVC, Route hay Htaccess và bạn vẫn phải lắm được và lắm nó thật chắc là đằng khác. Khi bạn lắm chắc các kiến thức đó thì việc bạn học một Framework nào đi nữa nó cũng trở nên đơn giản. 

Hay nói một cách chính xác thì bạn chỉ cần lắm được nguyên tắc cốt lõi của Framework là bạn có thể chuyển đổi giữa các Framework một cách không khó khăn. "Route -> Controller -> View". Điều khác nhau giữa các Framework là cú pháp hay hàm thực thi mà thôi.

Tại sao mình nói có nhiều bạn làm lập trình rất lâu nhưng không thể xây dựng được một class phân trang. Có lẽ là do trong các Framework có sẵn hết rồi và bạn không cần quan tâm tới thuật toán của nó. Hoặc do người ta chia sẻ quá nhiều bạn chỉ cần copy vào project mà thôi. 

Nhằm tóm tắt lại các kiến thức thì trong bài viết này mình sẽ cùng các bạn xây dựng một CMS thật là chuyên nghiệp có thể về mặt thư viện, hàm chức nang, khả năng xử lý nó không đa dạng và mạnh mẽ như các Framework nhưng theo mình nó đáp ứng được nhu cầu của một CMS cơ bản.

Thì cái CMS này mình sẽ lấy tên là TzCMS.

Một số đặc điểm của TzCMS.

  • TzCMS được xây dựng theo mô hình MVC.
  • Htaccess sẽ thay thế Route trong việc điều hướng liên kết.
  • Sử dụng Template engine là Smarty
  • Sử dụng Database Driver là ADODB
  • Kỹ thuật lazy loading model(classes)

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

Trong đó.

admin. Folder này giống như Root nhưng nó chứa source dành cho ứng dụng backend

application: Chứa ba folder chính là controller, model và templates. Folder này chứa source code của ứng dụng frontend

  • blocks. Chứa các block widget.
  • controller: Controller của Frontend
  • templates: Folder chứa view
  • templates_c: Folder chưa view parse của smarty. CHMODE 777
  • _header.php Controller của header.
  • _fooer.php Controller của footer

core: Chứa hai folder

  • adodb: Database driver.
  • classes: Model cho hệ thống MVC
  • common: Model chính cho hệ thống MVC
  • language: Folder chứa các file ngôn ngữ
  • libraries: Chứa các thư viện được tạo trong quá trình xây dựng ứng dụng
  • smarty: Template engine Smarty
  • autoload.php: Làm nhiệm vụ load các model hay classes
  • bootstrap.php. File bootstrap của CMS
  • global.php File định nghĩa các biến cơ bản của hệ thống.

uploads: Chứa file upload nên server.

config.php: File config của CMS

Tóm lại.

  • admin Chưa các folder và file xử lý và thao tác quản trị của hệ thống.
  • application: Chứa các thư mục và file xử lý frontend.
  • core: Chưa các folder và file thư viện của hệ thống.

Luồng xử lý yêu cầu từ người dùng trong TzCMS

    Tổng kết.

    Mong rằng sau khi hoàn thiện các bài viết hướng dân xây dựng CMS này thì các bạn cũng hiểu được kiến thức về MVC và OPP trong PHP. Mình không hướng dẫn các bạn xây dựng một Framework vì nó cần kiến thức rất rộng. Và hơn thế điều đó đôi khi là không cần thiết vì ở thời điểm hiện tại quá quá nhiều Framework. Mình đã làm CI, Laravel,Yii mình thấy nó là các Framework tuyệt vời. Qua đó các bạn có thể tự phát triển cho mình những CMS của riêng bạn thuần hoặc dựa trên các Framework bạn mong muốn hoặc ít ra bạn cũng hiểu luồng vào ra của một hệ thông CMS.

    Mọi ý kiến đóng góp để hoàn thiện TzCMS mình sẽ tiếp nhận và xử lý.

    E: buivanthiem.it@gmail.com

    FB: https://www.facebook.com/chiasephpnet-413945652278128/

    0