Bộ định tuyến PHP mvc

lớp Bộ định tuyến {

    public static function route[Request $request] {

        $controllerName = $request->getController[] . 'Controller';
        $methodName = $request->getMethod[];    
        $args = $request->getArgs[];    

        if[is_readable[CONTROLLERS . $controllerName . '.php']] {

            $controller = new $controllerName;  

            $method = [is_callable[array[$controller, $methodName]]] ? $methodName : 'main';        

            if[!empty[$args]] {

                call_user_func_array[array[$controller, $method], $args];                   

            } else {

                call_user_func[array[$controller, $method]];                    

            }

            return;

        }

        throw new Exception['wrong_route'];

    }

}

bài 05. Tự xây dựng mô hình MVC trong PHP – Phần 5. tuyến đường

  • Hoàng An
  • 25/03/2021
  • 0
  • Lập trình PHP

Trong video lần này mình chia sẻ cho các bạn từng bước xây dựng mô hình MVC trong PHP

Để xây dựng được mô hình MVC trong PHP bạn cần có những kiến ​​thức căn bản sau

  • PHP base
  • Kiến thức về Viết lại URL
  • Biểu thức chính quy [Regular Expressions]
  • Lập trình hướng đối tượng [OOP]
  • Từng trải qua dự án theo mô-đun hướng cấu hình, hướng hàm, hướng cấu trúc [Code thuần]

Video này là phần 5 trong loạt video về MVC PHP

  • Build route
  • Tối ưu load Controllers trong thư mục

Bấm để đánh giá bài viết này

[Tổng cộng. 0 Trung bình. 0 ]

lập trình php mô hình mvcmvc php mvc trong php php cơ bản xây dựng mvcxây dựng mvc trong php

Lớp MVC Router [là một phần của Bộ điều khiển phía trước rộng hơn] chia nhỏ URL của yêu cầu HTTP--cụ thể là thành phần đường dẫn [và có khả năng là chuỗi truy vấn]

Router cố gắng khớp một hoặc hai phần đầu tiên của thành phần đường dẫn với một tổ hợp tuyến đường tương ứng [Controller / Hành động [phương thức] hoặc chỉ một Controller thực thi một hành động mặc định [phương thức]

Một hành động, hoặc mệnh lệnh, chỉ đơn giản là một phương thức của một Controller cụ thể

Thường có một

`/`   // Should take you to the home page / HomeController by default
`''`  // Should take you to the home page / HomeController by default
`/gibberish&^&*^&*%#&[*$%&*#`   // Reject
1 và nhiều con của Controller, một con cho mỗi trang web [nói chung]

Một số người có thể nói rằng Router cũng chuyển đối số cho phương thức của Controller mong muốn, nếu có trong URL

Ghi chú. Những người theo chủ nghĩa thuần túy lập trình hướng đối tượng, tuân theo Nguyên tắc Trách nhiệm Đơn lẻ, có thể lập luận rằng việc định tuyến các thành phần của một URL và gửi một lớp Controller là hai trách nhiệm riêng biệt. Trong trường hợp đó, một lớp

`/`   // Should take you to the home page / HomeController by default
`''`  // Should take you to the home page / HomeController by default
`/gibberish&^&*^&*%#&[*$%&*#`   // Reject
2 sẽ thực sự khởi tạo lớp Controller và chuyển một trong các phương thức của nó bất kỳ đối số nào bắt nguồn từ yêu cầu HTTP của máy khách

ví dụ 1. Controller, nhưng không có hành động hay tranh luận

`/`   // Should take you to the home page / HomeController by default
`''`  // Should take you to the home page / HomeController by default
`/gibberish&^&*^&*%#&[*$%&*#`   // Reject
5 Trên một yêu cầu GET, điều này có thể hiển thị một biểu mẫu

Kiểm soát viên = Hợp đồng

Hành động = Mặc định [thường là phương thức

`/`   // Should take you to the home page / HomeController by default
`''`  // Should take you to the home page / HomeController by default
`/gibberish&^&*^&*%#&[*$%&*#`   // Reject
6]

=======================

ví dụ 2. Controller và hành động, nhưng không có đối số

`/`   // Should take you to the home page / HomeController by default
`''`  // Should take you to the home page / HomeController by default
`/gibberish&^&*^&*%#&[*$%&*#`   // Reject
8 Trên một yêu cầu POST, điều này có thể kích hoạt xác thực phía máy chủ và cố gắng gửi tin nhắn

Kiểm soát viên = Hợp đồng

Hành động = gửi

=======================

ví dụ 3. Controller, hành động và lập luận

Router0 Trên một yêu cầu POST, điều này có thể kích hoạt xác thực phía máy chủ và cố gắng gửi tin nhắn. Tuy nhiên, trong trường hợp này, có thể JavaScript không hoạt động. Do đó, để hỗ trợ quá trình xuống cấp nhẹ nhàng, bạn có thể yêu cầu Router1 sử dụng một Router2 hỗ trợ vẽ lại màn hình và phản hồi bằng tiêu đề HTTP của Router3, thay vì Router4. Router5 sẽ được chuyển thành đối số cho Router6. Lưu ý, ví dụ về Router5 của tôi hoàn toàn tùy tiện và được tạo ra, nhưng tôi nghĩ nó phù hợp với hóa đơn

Kiểm soát viên = Hợp đồng

Hành động = gửi

Đối số = Router8 // Có, truyền đối số vào một mảng

Một lớp Router khởi tạo lớp con cụ thể được yêu cầu, Controller, gọi phương thức được yêu cầu từ thể hiện của bộ điều khiển và chuyển các đối số của phương thức điều khiển đó [nếu có]

1] Lớp Router của bạn trước tiên nên kiểm tra xem có một Controller cụ thể nào mà nó có thể khởi tạo hay không [sử dụng tên như trong URL, cộng với từ "Trình điều khiển"]. Nếu tìm thấy bộ điều khiển, hãy kiểm tra sự hiện diện của phương thức được yêu cầu [hành động]

2] Nếu Router không thể tìm và tải PHP cần thiết trong thời gian chạy [nên sử dụng trình tải tự động] để khởi tạo một con Controller cụ thể, thì nó nên kiểm tra một mảng [thường được tìm thấy trong tên lớp khác Router5] để xem URL được yêu cầu có khớp không . Một bộ xương cơ bản của một lớp Router5 sau

Ghi chú. Router7 = Không, hoặc nhiều hơn, bất kỳ ký tự nào, không chụp

class Route
{
    private $routes = [
        ['url' => 'nieuws/economie/.*?', // regular expression.
         'controller' => 'news',
         'action' => 'economie'],
        ['url' => 'weerbericht/locatie/.*?', // regular expression.
         'controller' => 'weather',
         'action' => 'location']
    ];

    public function __contstruct[]
    {

    }

    public function getRoutes[]
    {
        return $this->routes;
    }
}

Tại sao sử dụng một biểu thức chính quy?

Router8, trong đó param[x] có thể là bất cứ thứ gì

Cảnh báo. Bạn nên thay đổi dấu phân cách mẫu biểu thức chính quy mặc định ['/'] khi nhắm mục tiêu dữ liệu chứa dấu phân cách mẫu [trong trường hợp này, dấu gạch chéo lên '/'. Hầu hết mọi ký tự URL không hợp lệ sẽ là một lựa chọn tuyệt vời

Một phương thức của lớp Router sẽ lặp qua mảng Controller0 để xem liệu có biểu thức chính quy khớp giữa URL mục tiêu và giá trị Controller1 được liên kết với chỉ mục Controller2 cấp 2 hay không. Nếu tìm thấy kết quả trùng khớp, thì Router sẽ biết cụ thể Controller nào sẽ khởi tạo và phương thức tiếp theo để gọi. Các đối số sẽ được truyền cho phương thức khi cần thiết

Bộ định tuyến trong MVC PHP là gì?

Bộ định tuyến giữ các quy tắc định tuyến dưới dạng một mảng với các đường dẫn làm khóa và các hành động làm giá trị . Các hành động là các chức năng được thực thi khi yêu cầu khớp với đường dẫn. Phương thức HTTP là tùy chọn, GET sẽ được sử dụng làm mặc định. Đối với các trang được tạo động, chúng tôi cũng cần phân tích các tham số đường dẫn.

Bộ định tuyến trong PHP là gì?

Định tuyến là điều xảy ra khi ứng dụng xác định bộ điều khiển và hành động nào được thực thi dựa trên URL được yêu cầu . Nói một cách đơn giản, đó là cách khung nhận được từ http. // localhost/người dùng/danh sách. html vào bộ điều khiển Người dùng và hành động list[].

PHP có MVC không?

Các khung PHP thường tuân theo mẫu thiết kế Model View Controller [MVC] . Khái niệm này tách việc thao tác dữ liệu khỏi cách trình bày của nó.

Làm cách nào để triển khai MVC trong PHP?

Cách xây dựng khung PHP MVC đơn giản .
Giới thiệu. Hôm nay tôi sẽ trình bày cách tạo một ứng dụng PHP đơn giản theo mẫu MVC [Model-View-Controller]. .
MVC có nghĩa là gì?.
Xây dựng một khung PHP MVC đơn giản. .
Tệp cấu hình htaccess. .
Bootstrap khung PHP MVC của bạn. .
Trình tải tự động. .
Kiểu mẫu. .

Chủ Đề