Dựng mô hình HMVC cho Laravel 5 – Seth Phát⚡ Blog

Chào mọi người,

Lâu lắm rồi mới quay lại viết blog cho laravel :D, chả biết viết gì luôn :v

Hôm nay mình sẽ chia sẻ với các bạn model hmvc và cách xây dựng hmvc trên laravel 5.

1/hmvc là gì?

hmvc là tên viết tắt của hierarchical model-view-controller, đây là một cải tiến của các mô hình MVC trở lên.

Những ưu điểm chính mà hmvc mang lại cho tôi là:

  • Mô đun hóa.
  • Tổ chức.
  • Khả năng tái sử dụng.
  • Khả năng mở rộng.
  • Biểu đồ để dễ hình dung:

    Image result for hmvc

    Nếu chúng ta search với từ khóa hmvc thì hầu hết kết quả sẽ là trên codeigniter vì nó đơn giản.

    Tuy nhiên cách áp dụng hmvc cho laravel 5 của chúng ta cũng đơn giản không kém, chuyển sang phần tiếp theo nhé 😀

    2/ áp dụng hmvc cho laravel 5

    Đầu tiên nó được chia thành nhiều phần, sau đó tôi làm một ví dụ về dự án như sau: https://github.com/sethsandaru/laravel-hmvc-sample

    Mã tham chiếu, bạn có thể sao chép repo trên vào

    Về cơ bản, tôi đã có thể đạt được những gì mình muốn (hmvc) bằng cách sử dụng gói phát triển của laravel.

    2.1/ Cấu trúc dự án cấu hình

    Đối với hmvc chúng ta sẽ luôn có một cơ sở mvc, từ đó chúng ta sẽ dần dần đi xuống các mô-đun mvc (mô-đun con) như sau:

    • Mvc cơ bản
      • Mô-đun 1 – mvc
      • Mô-đun 2 – mvc
      • Mô-đun n – mvc
      • Vậy theo thư mục mình sẽ chia như sau:

        • Ứng dụng (mvc cơ sở)
        • Ứng dụng/Mô-đun (Mô-đun mvc)
        • Sau bước đầu tiên, chúng ta chuyển sang bước tiếp theo.

          2.2/ Cấu trúc mô-đun cấu hình mvc

          Không chỉ mvc, chúng ta cũng cần có những thứ cần thiết để hỗ trợ cho việc code thuận tiện, nên bạn nào có thì bổ sung nhé 😀

          Trong mô-đun mvc, nó trông như thế này:

          • module
            • configs: sẽ chứa các tệp cấu hình (định dạng trong laravel).
            • Controller: Chứa các class controller.
            • language: chứa các tệp ngôn ngữ laravel (được bản địa hóa), theo định dạng của laravel.
            • Thư viện: Chứa các thư viện lớp.
            • migrations: Chứa các di chuyển lược đồ, theo định dạng laravel.
            • models: Chứa các mô hình được sử dụng trong mô-đun này.
            • views: Chứa các lượt xem tập tin.
            • routes.php: các tuyến được sử dụng trong mô-đun này
            • Thoạt nhìn thì có vẻ hoàn chỉnh phải không? :d. Thứ duy nhất còn thiếu là chức năng trợ giúp, nhưng có lẽ nó không tệ

              2.3/ Tạo dịch vụ cung cấp để bắt đầu hmvc

              Tạo một lớp gọi là hmvcserviceprovider trong ứng dụng/mô-đun mở rộng serviceprovider.

              Lớp này sẽ hỗ trợ chúng ta khởi động hmvc thông qua phương thức boot:

              Save file lại, mở file config/app.php, tại providers, chúng ta khai báo lớp này ở cuối mảng, và đi 😀

              2.4/ Khởi tạo module đầu tiên: home

              Sau khi đã hình dung sơ bộ về cấu trúc, chúng ta hãy tiếp tục 😀

              Tạo thư mục ứng dụng/mô-đun.

              Tiếp theo, tạo thư mục home (tên mô-đun) trong ứng dụng/mô-đun..

              Tuỳ theo nhu cầu mà chúng ta sẽ tạo các thư mục cần thiết (bộ điều khiển, dạng xem…) trong thư mục chính theo ý mình.

              2.5/ Khai báo định tuyến (tùy chọn)

              Nếu bạn sử dụng định tuyến và tạo tệp routes.php, hãy khai báo các tuyến của bạn như sau (giống như web.php):

              Khi định tuyến cho mô-đun, nên đặt một số quy tắc nhất định. Ví dụ: tôi nghĩ mô-đun nhà luôn bắt đầu bằng /home nên tôi cũng nhóm nó p>

              Nếu mô-đun của bạn không cần định tuyến, bạn có thể bỏ qua bước này😀

              2.6/ Tạo các tệp cần thiết để gán

              Cụ thể ở đây mình cần 1 controller, 1 view, 1 model là có thể tiến hành tạo bình thường.

              Với controller và model chúng ta vẫn tạo bình thường. Sử dụng bộ điều khiển, mở rộng lại bộ điều khiển trong apphttp. Còn mô hình nếu dùng hùng hồn thì kéo dài mô hình bình thường.

              Còn riêng về view thì mình sẽ tạo thêm một thư mục để chúng ta quản lý view, và đặt tên folder theo controller như sau (ví dụ mình có controller home):

              • Xem
                • Trang chủ
                  • index.blade.php
                  • abc.blade.php
                  • đại loại như thế

                    Vậy là xong, chúng ta đã có các module cơ bản của project rồi 😀

                    3/ bộ tải laravel

                    3.1/Đang tải chế độ xem

                    Để tải chế độ xem, chúng ta cần sử dụng bí danh để laravel hiểu được mô-đun của chúng ta. Theo các bước khởi động ở trên serviceprovider, alias module sẽ là tên thư mục của module. Bạn sẽ tải chế độ xem như sau:

                    3.2/Nạp văn bản dịch (văn bản ngôn ngữ)

                    Chúng tôi cũng nhận được nó bằng bí danh, như thế này:

                    3.3/Tải cấu hình

                    config, hơi đặc biệt một chút, để tạo config cho module thì bạn cần:

                    1. Tạo tệp cấu hình trong app/modules//configs. Thực hiện theo các tiêu chuẩn của laravel.
                    2. Mở file hmvcserviceprovider.php, bạn sẽ thấy thuộc tính là $configfile.
                    3. Đăng ký tệp cấu hình của bạn như sau: (config_alias => config_file_location)
                    4. Để lấy các mục cấu hình, chúng ta sẽ sử dụng chức năng cấu hình như bình thường:

                      4/Di chuyển

                      Đối với quá trình di chuyển, khi chúng ta sử dụng lệnh php artisan migration, quy trình của nó sẽ chạy như sau:

                      • di chuyển cơ sở/lõi (trong cơ sở dữ liệu/di chuyển)
                      • Thông qua từng mô-đun:
                        • Mô-đun 1
                        • Mô-đun 2
                        • Tạo di chuyển

                          Chỉ cần tạo nó trong thư mục di chuyển bên trong thư mục mô-đun.

                          Lưu ý: Tên file + tên class theo sau migration của laravel, nếu không sẽ không hiểu.

                          Kết luận 5/hmvc cho laravel 5

                          Qua bài viết này có lẽ các bạn đã hiểu hơn về cách xây dựng hmvc cho laravel 5.

                          Tuy nhiên, mình cũng có một tiết lộ nhỏ, đây là hmvc chưa thực sự hoàn chỉnh cho laravel 5, mà chúng ta sử dụng module hóa của hmvc để áp dụng và module hóa cho laravel 5. Nhưng bản chất của laravel là nó không thể xây dựng đầy đủ hmvc.

                          Nhưng nó vẫn mang lại cho chúng ta khá nhiều lợi thế, đặc biệt là đối với các dự án lớn😀

                          Để biết mã tham chiếu, vui lòng truy cập liên kết github của tôi ở trên, hoàn thành mã mẫu

                          Cảm ơn đã xem!

                          # hmvc cho ấu trùng 5

                          # Xây dựng mô hình hmvc cho laravel 5

Related Articles

Back to top button