Hướng dẫn can you use php in mvc? - bạn có thể sử dụng php trong mvc không?
Giới thiệuHôm nay tôi sẽ chỉ ra cách tạo một ứng dụng PHP đơn giản theo mẫu MVC (Model-View-Controller). Tôi đã được truyền cảm hứng từ một khóa học PHP mà tôi đã dạy vài năm trước, và trong đó tôi đã xây dựng một thương mại điện tử đơn giản với các sinh viên. Thương mại điện tử này dựa trên khung MVC đơn giản dựa trên PHP. Sau đó, những người đã tiếp tục với mã và lập trình đã có một số ít về điều gì có nghĩa là MVC trước khi có được một khuôn khổ thực sự.MVC pattern (Model-View-Controller). I was inspired by a PHP course I taught some years ago, and in which I built a simple e-commerce with the students. This e-commerce was based on a simple MVC framework based on PHP. Then, people who have continued with code and programming already had a smattering of what means MVC before get their hands on a real framework. Show
Các khung MVC được sử dụng rộng rãi trong ngành vì chúng cung cấp rất nhiều lợi thế cho sự phát triển nhanh chóng và có cấu trúc. Có các khung MVC cho hầu hết các ngôn ngữ lập trình mà bạn có thể biết, từ dotnet đến PHP. Thật không may, những khung đó có thể có một đường cong học tập dốc. Điều này là do thực tế là mọi người cần học cách viết mã trong hệ sinh thái khung. Lưu ý cá nhân: Năm 2010, tôi đã phát triển phần mềm trong hơn 5 năm và tôi đã tìm kiếm một giải pháp tốt để xây dựng một ứng dụng web cho sếp của tôi. Tóm tắt với một đồng nghiệp cũ của tôi (cảm ơn Davide C.!), Tôi bắt đầu sử dụng Symfony 1.4. Tôi đã sử dụng phương pháp tiếp cận RT RTFM (đọc hướng dẫn sử dụng thân thiện) trước khi viết bất kỳ mã nào. Trong hai tháng, tôi đã nhận ra một ứng dụng phức tạp trung bình (đăng ký, ACL, bảng điều khiển, frontend, v.v.). Sau đó, tôi đã làm việc trên Zend Framework, Symfony 2.0 và 5 và Laravel (hiện đang làm việc trên 5,8), và cả trên các microframeworks như SILEX (không được duy trì nữa) và lum. Không còn nghi ngờ gì nữa, khuôn khổ yêu thích của tôi là Laravel. Mặc dù có một số thứ kỳ diệu của người Viking có thể khiến mọi người sợ hãi, Laravel cung cấp rất nhiều tính năng vượt trội mà bạn có thể chỉ cần kích hoạt với cài đặt cấu hình phù hợp. MVC có nghĩa là gì?MVC là một mẫu thiết kế được sử dụng để tách dữ liệu (mô hình), giao diện người dùng (chế độ xem) và logic ứng dụng (bộ điều khiển). Để có thể theo dõi cách thức này, bạn cần có kiến thức tốt về PHP và OOP (lập trình hướng đối tượng). Xây dựng khung MVC PHP đơn giảnĐộc lập bạn đang sử dụng Docker, XAMPP hoặc bất cứ điều gì cho môi trường phát triển của bạn, hãy để tạo ra một cấu trúc đơn giản cho khung MVC PHP đơn giản. Tôi sử dụng để có một thư mục có tên là Giải pháp cho tất cả các dự án của mình, sau đó nhập thư mục của bạn, tạo một thư mục mới có tên là Simple Simple-Php-MVC và sau đó nhập thư mục đó.
Bắt đầu nhỏ, hãy để tạo ra hai tệp quan trọng nhất của PHP MVC đơn giản của chúng tôi: index.php và htaccess. Tệp cấu hình htaccessNhập thư mục công khai và cho phép tạo một tệp được gọi là index.php Bây giờ, ở cấp độ gốc của dự án của bạn, hãy để tạo một tệp mới có tên .htaccessthen mở nó và đặt mã này vào bên trong htaccess:
HTACCESS là một tệp cấu hình cho máy chủ web Apache và Chỉ thị MOD_REWRITE nói với Apache rằng mọi yêu cầu sẽ kết thúc với index.php nằm trong thư mục có tên công khai. Nó có nghĩa là gì? Điều đó có nghĩa là nếu bạn duyệt https: // simple-php-mvc/page1, https: // simple-php-mvc/page2 hoặc https: // simple-php-mvc/page3, tất cả chúng sẽ kết thúc trong index.php thuộc công khai, đó là điểm nhập của khung MVC PHP của bạn. Đây là một lợi thế lớn vì bây giờ bạn có thể xử lý yêu cầu của mình ở một nơi, hiểu tài nguyên nào được yêu cầu và cung cấp phản hồi phù hợp. với bất cứ ai.entry point of your PHP MVC
framework. This is a big advantage because you can now handle your request in one place, understand what resource is requested and provide the right response. Đây là cách mà dự án của bạn trông giống như bây giờ: Bootstrap Khung MVC PHP của bạnBây giờ bạn cần một cách để bootstrap Ứng dụng của bạn và tải mã bạn cần. Chúng tôi đã nói rằng index.php trong thư mục công khai là điểm nhập, vì lý do đó chúng tôi bao gồm các tệp cần thiết từ đó. Trước hết, chúng tôi tải tệp cấu hình, đây là nội dung của index.php:
Bây giờ chúng ta có thể tạo một tệp config.php trong thư mục cấu hình. Bên trong tệp cấu hình, chúng ta có thể lưu trữ các cài đặt của khung, ví dụ, chúng ta có thể lưu trữ tên của ứng dụng, đường dẫn của gốc và tất nhiên, các tham số kết nối cơ sở dữ liệu:
AutoloaderChúng tôi muốn có thể tải các lớp trong tương lai mà không có bất kỳ đau đớn nào (xem: hàng chục bao gồm hoặc yêu cầu), sau đó chúng tôi sẽ sử dụng tự động tải PSR-4 với Composer.composer là Trình quản lý phụ thuộc cho PHP, nó cho phép bạn khai báo Thư viện dự án của bạn phụ thuộc và nó sẽ quản lý chúng cho bạn. Thực sự hữu ích! Đầu tiên, ở cấp độ gốc, bạn phải tạo một tệp có tên Composer.json và thêm nội dung sau:
Sau đó, giả sử rằng bạn đã cài đặt trình soạn thảo trên máy tính hoặc container của mình, thực hiện lệnh sau (ở cấp độ gốc của dự án của bạn):
Nếu bạn kiểm tra thư mục gốc của mình ngay bây giờ, bạn có thể thấy một thư mục mới có tên là nhà cung cấp có chứa tệp autoload.php và thư mục trình soạn thảo.
Từ giờ trở đi, bạn có thể sử dụng ứng dụng như một điểm bắt đầu của không gian tên của mình, như thế này:
Bây giờ, hãy để tìm hiểu những gì viết tắt của MVC là viết tắt của. Người mẫuMột mô hình là một đối tượng đại diện cho dữ liệu của bạn. Mô hình sẽ được mô hình hóa trên cấu trúc bảng cơ sở dữ liệu của bạn và nó sẽ tương tác với các hoạt động cơ sở dữ liệu (tạo, đọc, cập nhật và xóa).
Trước hết, hãy để Lừa tạo một thư mục mới có tên là Mô hình trong thư mục ứng dụng. Sau đó, hãy để tạo ra một tệp mới có tên là sản phẩm trong mô hình. Sản phẩm mô hình của bạn sẽ là:
Và đó là nó. Với các phương thức, bạn sẽ tạo các đối tượng bạn cần được lấp đầy với các giá trị thực dựa trên mô hình. Lượt xemChế độ xem có trách nhiệm lấy dữ liệu từ bộ điều khiển và hiển thị các giá trị đó. Đó là nó. Có rất nhiều động cơ mẫu cho PHP, từ cành đến lưỡi. Đối với hướng dẫn MVC này cho PHP, chúng tôi sẽ chỉ sử dụng HTML đơn giản để làm cho mọi thứ trở nên đơn giản. Để tạo chế độ xem mới, chúng ta phải tạo một tệp mới có tên Product.php trong thư mục chế độ xem. Dựa trên các thuộc tính sản phẩm, chúng ta có thể viết một HTML đơn giản như thế này: 0Chế độ xem hiện đã sẵn sàng để có được đối tượng sản phẩm ($ sản phẩm) và hiển thị các giá trị của nó. Người điều khiểnBộ điều khiển là trung tâm của logic ứng dụng. Chịu trách nhiệm chấp nhận đầu vào và chuyển đổi nó thành các lệnh cho mô hình hoặc chế độ xem.let, Tạo một thư mục mới có tên là bộ điều khiển trong thư mục ứng dụng và tạo một tệp bộ điều khiển mới có tên ProductControll.php. Đây là nội dung: 1Rất đơn giản, có phải là nó không? Rõ ràng, mọi thứ có thể phức tạp hơn, chúng ta có thể tạo một lớp điều khiển cha mẹ, phương thức xem và các hàm trợ giúp khác. Nhưng nó đủ cho bây giờ. Hệ thống định tuyếnBây giờ chúng ta cần một cơ chế để đối phó với các URL. Chúng tôi muốn sử dụng một URL thân thiện; Nói cách khác, chúng tôi muốn xử lý các địa chỉ web dễ đọc và bao gồm các từ mô tả nội dung của trang web. Chúng tôi cần một hệ thống định tuyến sau đó. Chúng tôi có thể tạo hệ thống tuyến đường của riêng mình hoặc vì chúng tôi đã sử dụng trình soạn thảo để tự động tải, chúng tôi có thể đào sâu vào các gói hệ sinh thái Symfony rộng rãi và làm việc thông minh! Thành phần. Đây là tài liệu: https://symfony.com/doc/civerse/create_framework/routing.htmlrouting system then. Trước hết, cài đặt thành phần: 2 Cài đặt Symfony/Routing thông qua Trình soạn thảo.Install
symfony/routing via composer.Nếu bạn kiểm tra bên trong thư mục nhà cung cấp ngay bây giờ, bạn có thể thấy rằng một thư mục mới có tên là Symfony đã được tạo. Sau đó, hãy bắt đầu triển khai hệ thống định tuyến cho khung MVC của chúng tôi. Mục tiêu là hiển thị các giá trị của sản phẩm với ID = 1 khi duyệt URL /Sản phẩm /1let, Tạo một tệp mới có tên Web.php trong thư mục ROUTES. Tệp này sẽ chứa tất cả các tuyến đường của ứng dụng của bạn. 3Chúng tôi sử dụng các lớp tuyến đường và tuyến đường từ thành phần định tuyến Symfony để tạo và liệt kê tất cả các tuyến chúng tôi cần. Chúng tôi bắt đầu với một trang sản phẩm duy nhất. Isn đủ: Chúng tôi cũng phải cài đặt gói này: 4Ở đây một số giải thích: https://symfony.com/doc/civerse/components/http_foundation.html
Và một lần nữa từ Symfony: Trong PHP, yêu cầu được thể hiện bằng một số biến toàn cầu ($ _GET, $ _POST, $ _FILES, $ _Cookie, $ _Session, Muff) và phản hồi được tạo bởi một số chức năng (echo, header (), setCookie (), Voi). Thành phần Symfony HTTPFoundation thay thế các biến và chức năng toàn cầu PHP mặc định này bằng một lớp hướng đối tượng. Ok sau đó, hãy để tạo ra động cơ định tuyến. Thêm một tệp mới có tên là Router.php bên trong thư mục ứng dụng của bạn và đặt mã này bên trong nó: 5Mã này rất đơn giản và tự nói lên, nhưng hãy để giải thích nó một chút: Trình kết hợp URL thực hiện URI yêu cầu và sẽ kiểm tra xem có phù hợp với các tuyến được xác định trong các tuyến/web.php không. Nếu có một trận đấu, hàm call_user_func_array sẽ thực hiện phép thuật, gọi phương thức phù hợp của bộ điều khiển bên phải. . Bây giờ chúng ta có thể đưa hệ thống các tuyến trong tệp index.php: 6Bây giờ chúng tôi đã chuẩn bị hệ thống định tuyến, chúng tôi có thể duyệt /sản phẩm /1 trang và xem kết quả. Rõ ràng, các giá trị bây giờ trống rỗng. Hãy để thêm một số giá trị giả vào sản phẩm (bên trong ProductControll.php): 7Và duyệt một lần nữa trang /sản phẩm /1 Bây giờ bạn có thể thêm kết nối cơ sở dữ liệu của mình và trả về các giá trị từ cơ sở dữ liệu, sử dụng truy vấn thô hoặc một ORM như học thuyết hoặc hùng hồn. Ghi chú bổ sung cho định tuyến: Các tuyến đường của bạn có thể trùng nhau với nhau, ví dụ, nếu bạn viết /{pagesLug} Trước bất kỳ tuyến nào khác, chẳng hạn như /đăng ký. Bạn có thể dễ dàng khắc phục vấn đề này chỉ bằng cách viết tuyến đường chung /{pagesLug} ở cuối tất cả các tuyến đường. Tuyến đường này sẽ trở thành dự phòng của bạn. Hoặc, một giải pháp khác là thêm tiền tố, chẳng hạn như /static /{pagesLug} hoặc /public /{pagesLug}./{pageSlug} before any other route, such as /register. You can easily overcome this problem simply by writing your general route /{pageSlug} at the end of all the routes. This route will become your fallback. Or, another solution is to add a prefix, such as /static/{pageSlug} or /public/{pageSlug}. Trang chủHãy để chuẩn bị ngay bây giờ tuyến đường trang chủ. Mở các tuyến/web.php và thêm tuyến đường mới: 8Rõ ràng, chúng ta cần tạo bộ điều khiển mới Pagecontroll: 9Và quan điểm mới: 0Vì chúng tôi sử dụng cùng một mã cho tiêu đề và chân trang, chúng tôi có thể tạo một thư mục bố cục và tách mã cho các phần HTML đó. Để điều hướng trang, hãy mở trình duyệt của bạn và duyệt URL này: 1URL chính xác phụ thuộc vào cài đặt của bạn. Tôi sử dụng Docker cho môi trường địa phương của mình và tôi thường thiết lập cổng, sau đó URL của tôi có thể hơi khác so với bạn, ví dụ, tôi sử dụng 2Lưu ý: Nếu bạn đã cài đặt dự án của mình vào một thư mục con như nhiều người dùng dường như sẽ làm, bạn phải thiết lập hằng số url_subfolder trong tệp cấu hình. Ví dụ: nếu bạn đã cài đặt dự án này bên trong một thư mục con có tên Simple-MVC-Php-FrameWork, URL cuối cùng của bạn sẽ là:must set up URL_SUBFOLDER constant in the config file. For example, if you installed this project inside a subfolder called simple-mvc-php-framework, your final URL will be: 3Cải thiện khung MVC PHPKết nối cơ sở dữ liệu và ORM, phiên, cookie, bộ điều khiển trang tốt hơn chấp nhận các tham số trang khác nhau hoặc bất kỳ tính năng nào khác có thể được thêm rất dễ dàng, nhưng bài viết này chỉ muốn hiển thị cách xây dựng một MVC PHP thực sự đơn giản. Tải xuống mãBạn có thể tải xuống tệp zip hoặc sao chép mã của bài viết này thông qua github.https: //github.com/gmaccario/simple-mvc-phph Sự kết luậnKhi bạn đã tự tin với mô hình MVC, tôi khuyên bạn nên đọc tài liệu của Laravel (khung MVC PHP yêu thích của tôi) hoặc Symfony và bắt đầu bị ướt chân! Bạn có thể nhận thấy rằng sự phát triển trở nên nhanh hơn so với sử dụng giải pháp PHP thuần túy. Cảm ơn bạn đã dành thời gian, tôi hy vọng bạn có một số thông tin mới về mô hình MVC. Hãy thoải mái nâng dự án trên GitHub và nếu bạn có bất kỳ vấn đề nào, hãy kiểm tra tab các vấn đề hoặc mở một vấn đề mới (nếu đó là một cái mới thực sự!). Dù sao, bạn cũng có thể gửi cho tôi một tin nhắn nhưng tôi thích trả lời trên GitHub để chia sẻ kiến thức với người khác. Tôi quyết định đóng các bình luận trên trang này do số lượng lớn thư rác và số lượng lớn các câu hỏi trùng lặp. Tôi hy vọng bạn có thể hiểu! Lưu ý: Dự án này là một bộ khởi động đơn giản và nó hoạt động tốt nếu môi trường của bạn được cấu hình chính xác. Tôi không sử dụng XAMPP, hoặc một gói ngăn xếp được cấu hình sẵn khác. Trước đây tôi đã sử dụng để tạo đèn của mình cài đặt phần mềm riêng lẻ, bây giờ tôi đang sử dụng Docker. Sau đó, nếu bạn có một số vấn đề với môi trường của bạn, nó sẽ tiếp tục giải quyết vấn đề của bạn. Và một lần nữa: Đây là một bộ khởi động đơn giản với mục tiêu giúp mọi người hiểu một số khái niệm đằng sau MVC. Nếu bạn muốn tạo một dự án chuyên nghiệp, hãy tìm Laravel hoặc Symfony. Tại sao MVC được sử dụng trong PHP?MVC-Mô hình kiến trúc mô hình-view-Controller giúp bạn kiểm tra mã của mình để bảo trì dễ dàng hơn. Bằng cách giữ cho logic điều khiển dữ liệu tách biệt với các bit xử lý màn hình, bạn giúp thay đổi mẫu hoặc mã cơ bản dễ dàng hơn nhiều mà không cần chạm vào cái kia.helps you tier your code for easier maintenance. By keeping the data-manipulating logic separate from the bits that handle the display, you make it much easier to change either the template or the underlying code without touching the other.
Ngôn ngữ lập trình nào được sử dụng cho MVC?Mẫu MVC được sử dụng rộng rãi trong phát triển chương trình với các ngôn ngữ lập trình như Java, Smalltalk, C và C ++.Java, Smalltalk, C, and C++.
MVC là gì và nó hoạt động như thế nào trong PHP?MVC là một cách tiếp cận phần mềm phân tách logic ứng dụng với trình bày.Trong thực tế, nó cho phép các trang web của bạn chứa kịch bản tối thiểu vì bản trình bày tách biệt với tập lệnh PHP.Mô hình đại diện cho các cấu trúc dữ liệu của bạn.a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting. The Model represents your data structures.
MVC có tốt cho phát triển web không?Các dự án được phát triển với sự trợ giúp của mô hình MVC có thể dễ dàng phát triển với chi tiêu ít hơn và trong thời gian ngắn hơn.Trên hết, sức mạnh của nó để quản lý nhiều chế độ xem làm cho MVC trở thành mẫu kiến trúc tốt nhất để phát triển các ứng dụng web.its power to manage multiple views makes MVC the best architecture pattern for developing web applications. |