HANDSOMEROOT
Bài 06: MVC PHP - Viết thư viện load library
- Nhận đường liên kết
- X
- Ứng dụng khác
Ở bài trước chúng ta đã viết được thư viện load config và trong bài này chúng ta cũng viết một thư viện có chức năng tương tự đó là load library. Vậy library có gì đặc biệt trong mô hình MVC mà ta phải cần đến nó? Để trả lời câu hỏi này thì ta sẽ đi tìm hiểu khái niệm library là gì đã nhé.
Trước khi vào vấn đề chính thì mình chụp hình cấu trúc folder của project khi kết thúc bài này để các bạn dễ học hơn nhé.
1. Library trong mô hình MVC
Trong quá trình xây dựng dự án đôi lúc bạn cần viết những class nhằm xử lý một vấn đề nào đó. Ví dụ như class upload file, class phân trang, ... thì những lớp này sẽ được đặt ở đâu trong mô hình MVC? Câu trả lời chính là đặt trong thư mục library nhé các bạn. Còn thư mục config chỉ chứa những file cấu hình hệ thống và nội dung của nó sẽ return về một mảng dạng tương tự như bài trước chúng ta đã học rồi.
Cấu trúc lưu trữ này giống với Framework Codeigniter và mình cũng xây dựng dạng như nó nhưng ở mức đơn giản để dễ trình bày vàdễ cả vấn đề hiểu bài của các bạn.
2. Thư mục library nằm ở đâu trong mô hình MVC
Tất cả các class thư viện đều được đặt trong thư mục
system/library
. Vậy bạn có thắc mắc tại sao không đặt ở trong moduleadmin
không? Đó là tại vì tôi muốn các thư viện có thể dùng chung cho tất cả module (admin
, site
) nên sẽ đặt trong system. Còn nếu đặt trong module thì chỉ dùng được cho module đó thôi.
Bây giờ bạn tạo một file tên là
Upload_Library.php
nằm trong thư mục system/library
và copy nội dung sau dán vào:<?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!'); class Upload_Library { public function __construct() { echo '<h3>Class Upload_Library được khởi tạo</h3>'; } public function upload() { echo '<h3>Method Upload được gọi tới</h3>'; } }
Vấn đề bây giờ của chúng ta là viết thư viện load library.
3. Viết thư viện load library
Bạn mở file
system/core/loader/FT_Library_Loader.php
và copy nội dung sau vào:<?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!'); /** * @package FT_Framework * @author Freetuts Dev Team * @email freetuts.net@gmail.com * @copyright Copyright (c) 2015 * @since Version 1.0 * @filesource system/core/loader/FT_Library_Loader.php */ class FT_Library_Loader { /** * Load library * * @param string * @param array * @desc hàm load library, tham số truyền vào là tên của library và * danh sách các biến trong hàm khởi tạo (nếu có) */ public function load($library, $agrs = array()) { // Nếu thư viện chưa được load thì thực hiện load if ( empty($this->{$library}) ) { // Chuyển chữ hoa đầu và thêm hậu tố _Library $class = ucfirst($library) . '_Library'; require_once(PATH_SYSTEM . '/library/' . $class . '.php'); $this->{$library} = new $class($agrs); } } }
Trong đó mình đã tạo một class tên là
FT_Library_Loader
và có một method load()
gôm hai tham số:$library
là tên class muốn load.$agrs
là các tham số truyền vào hàm khởi tạo của class đó. Nếu không có thì bỏ qua tham số này
Các bạn chú ý tên class truyền vào phải tuân theo nguyên tắc như sau: Giả sử class bạn đặt tên là upload thì tên file phải là
Upload_Library.php
(viết hoa chữ đầu và thêm hậu tố _Library), tương tự tên class cũng phải đặt như vậy. Nếu bạn để ý kĩ trong phương thức load()
mình cũng có đề cập đến vấn đề này.4. Bổ sung thư viện vào FT_Controller
Chúng ta cần khởi tạo thư viện
FT_Library_Loader
này ở controller chính (FT_Controller
) nhằm mục đích các controller trong module admin có thể sử dụng được.
Bạn mở file
system/core/FT_Controller.php
lên và sửa lại hàm khởi tạo như sau:public function __construct() { // Loader cho config require_once PATH_SYSTEM . '/core/loader/FT_Config_Loader.php'; $this->config = new FT_Config_Loader(); $this->config->load('config'); // Loader Library require_once PATH_SYSTEM . '/core/loader/FT_Library_Loader.php'; $this->library = new FT_Library_Loader(); }
Ok và cuối cùng chúng ta chỉ học cách sử dụng thôi.
4. Load libray tại Controller
Bây giờ bạn tạo mới một controller tên là library bằng cách thực hiện các bước sau:
- Tạo file
Library_Controller.php
nằm trong thư mụcadmin/controller
- Viết code tạo mới Controller và Action index.
<?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!'); class Library_Controller extends FT_Controller { public function indexAction() { } }
Như vậy là bạn tạo xong rồi đấy. Ở những bài sau mình không nhắc lại cách tạo controller nữa nhé.
Bây giờ bạn viết code load library upload và gọi đến phương thức upload bằng cách sửa lại controller như sau:
<?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!'); class Library_Controller extends FT_Controller { public function indexAction() { // Tạo mới thư viện $this->library->load('upload'); // Gọi đến phương thức upload $this->library->upload->upload(); } }
Chạy lên với URL
http://localhost/mvc/admin.php?c=library
nếu xuất hiện giao diện như sau là OK.5. Lời kết
Vậy là trong bài này bạn đã tìm hiểu được cách viết hệ thống load library và ý nghĩa của folder library trong mô hình MVC. Bài này cũng rất thú vụ không kém gì bài load config phải không nào. Nếu có vấn đề thắc mắc bạn hãy comment bên dưới mình sẽ giải đáp sớm nhất có thể.
Nguồn: http://freetuts.net/mvc-php-viet-thu-vien-load-library-360.html
Bài đăng phổ biến từ blog này
[Share] CSDL Quản lý Shop Online
Cấu trúc của cơ sở dữ liệu Danh sách các bảng 1. Bảng About (Lưu các bài viết giới thiệu cửa hàng) 2. Bảng Contact (Lưu thông tin liên hệ của cửa hàng) 3. Bảng Feedback (Lưu trữ thông tin phản hồi của người dùng) 4. Bảng Footer (Lưu trữ những thiết kế footer của trang web) 5. Bảng MenuType (Lưu trữ các loại menu trong trang web. Ví dụ : TopMenu, LeftMenu…) 6. Bảng Menu (Lưu trữ các menu) 7. Bảng NewCategory (Lưu trữ các nhóm chuyên mục về tin tức. Ví dụ : Tin khuyến mãi, tin công nghệ,…) 8. Bảng New (Lưu trữ các tin tức, bài đăng trên website) 9. Bảng Tag (Lưu trữ các thẻ) 10. Bảng ...
Hướng dẫn cài đặt VRML Pad và Cortona 3D Viewer
1. Hướng dẫn cài đặt VrmlPad 3.0 Chào các bạn. Hôm nay mình sẽ hướng dẫn các bạn cài đặt VrmlPad 3.0 Đầu tiên các bạn truy cập vào link sau để download phần mềm http://www.parallelgraphics.com/products/vrmlpad/download/ Ở phần VrmlPad 3.0 > Evalustion version chọn Download Sau khi quá trình tải về hoàn tất Các bạn tiến hành cài đặt phần mềm Chọn Next Nhấn Browser để chọn đường dẫn cài đặt phần mềm, chọn Next Chọn Install Chờ quá trình cài đặt phần mềm thành công. Nhấn Finish OK. Mình đã cài đặt xong. Giao diện phần mềm khi chạy lần đầu tiên Các bạn đã có thể soạn thảo Nhưng để chạy được file .wrl này chúng ta sẽ cài thêm 1 phần mềm bổ trợ Cortona 3D 2. Hướng dẫn cài đặt Cortona 3D Viewer Các bạn vào link sau để download http://www.cortona3d.com/ Chọn Menu " PRODUCTS " > " VIEWERS " > " CORTONA 3D VIEWER " Tiếp theo chọn DOWNLOAD CORTONA 3D VIEWER Chọn download tùy vào...
RANKING in SQL (ROW_NUMBER, RANK, DENSE_RANK,NTILE)
Hàm Ranking là gì? Các hàm Ranking cho phép bạn có thể đánh số liên tục (xếp loại) cho các tập hợp kết quả. Các hàm này có thể được sử dụng để cung cấp số thứ tự trong hệ thống đánh số tuần tự khác nhau. Có thể hiểu đơn giản như sau: bạn có từng con số nằm trên từng dòng liên tục, tại dòng thứ nhất xếp loại số 1, dòng thứ 2 xếp loại số là 2… Bạn có thể sử dụng hàm ranking theo các nhóm số tuần tự, mỗi một nhóm sẽ được đánh số theo lược đồ 1,2,3 và nhóm tiếp theo lại bắt đầu bằng 1,2,3… Chúng ta bắt đầu xem xét cách hàm trong sql hổ trợ từ 2005 Dữ liệu thử : CREATE TABLE Person( FirstName VARCHAR(10), Age INT, Gender CHAR(1) ) INSERT INTO Person VALUES ('Ted', 23, 'M') INSERT INTO Person VALUES ('John', 40, 'M') INSERT INTO Person VALUES ('George', 6, 'M') INSERT INTO Person VALUES ('Mary', 11, 'F') INSERT INTO Person VALUES ('Sam', 17, 'M') INSERT INTO Pe...
Nhận xét
Đăng nhận xét