HANDSOMEROOT
Bài 05: MVC PHP - Viết thư viện load config
- Nhận đường liên kết
- X
- Ứng dụng khác
Chúng ta lại gặp nhau trong serie project MVC PHP nữa rồi. Trong bài này chúng ta sẽ tìm hiểu cách viết file cấu hình (config) cho module và các thao tác như lấy giá trị config, thiết lập thay đổi giá trị cho config.
Config là file cấu hình cho module và đóng vai trò rất quan trọng, mỗi module thường sẽ có một file
config.php
và coder sẽ định nghĩa các thông số nằm trong đó.1. Tạo file config.php cho module trong MVC
Bạn tạo một file
config.php
nằm trong thư mục admin/config
như sau:
Giả sư ta có danh sách các cấu nằm trong file này như sau:
1
2
3
4
5
6
| <?php if ( ! defined( 'PATH_SYSTEM' )) die ( 'Bad requested!' ); return array ( 'csrf_token_name' => 'tokenname' , ); |
Ok, vấn đề bây giờ là làm sao load các thông số này trong controller. Để làm được như vậy thì ta phải tạo thư viện Loader cho nó.
2. Tạo thư viện load config trong MVC
Bạn tạo một file
FT_Config_Loader.php
nằm trong thư mục system/core/loader
như hình sau:
Bây giờ bạn copy nội dung sau vào file này:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| <?php /** * @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_Config_Loader.php */ class FT_Config_Loader { // Danh sách config protected $config = array (); /** * Load helper * * @param string * @desc hàm load helper, tham số truyền vào là tên của helper */ public function load( $config ) { if ( file_exists (PATH_APPLICATION . '/config/' . $config . '.php' )){ $config = include_once PATH_APPLICATION . '/config/' . $config . '.php' ; if ( ! empty ( $config ) ){ foreach ( $config as $key => $item ){ $this ->config[ $key ] = $item ; } } return true; } return FALSE; } /** * Get item config * * @param string * @param string * @desc hàm get config item, tham số truyền vào là tên của item và tham số mặc định */ public function item( $key , $defailt_val = '' ) { return isset( $this ->config[ $key ]) ? $this ->config[ $key ] : $defailt_val ; } /** * Set item config * * @param string * @param string * @desc hàm set config item, tham số truyền vào là tên của item và giá trị của nó */ public function set_item( $key , $val ){ $this ->config[ $key ] = $val ; } } |
Trong lớp này mình định nghĩa ba hàm chính là:
- hàm
load()
dùng để load một file config nào đó - hàm
item()
dùng để lấy một key config nào đó - hàm
set_item()
dùng để thiết lập thay đổi giá trị của key config nào đó.
3. Tạo đối tượng load config trong FT_Controller
Bước cuối cùng này khá quan trọng. Bạn sẽ tạo một đối tượng load config ở hàm khởi tạo của controller chính (FT_Controller).
Bạn mở file
system/core/FT_Controller.php
lên tìm đến hàm khởi tạo __construct()
và thêm một đoạn code sau:
1
2
3
4
5
6
7
| 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' ); } |
Trong đoạn code này mình thực hiện 3 thao tác:
- include file loader
FT_Config_Loader.php
của config - khởi tạo mới đối tượng loader và lưu vào thuộc tính
config
của controller - thực hiện load file
config.php
.
Bạn vào controller
New_Controller.php
và giữ nguyên nội dung như bài trước đã làm:
1
2
3
4
5
6
7
8
9
10
11
| <?php if ( ! defined( 'PATH_SYSTEM' )) die ( 'Bad requested!' ); class News_Controller extends FT_Controller { public function indexAction() { echo '<pre>' ; print_r( $this ); echo '<h1>Index Action</h1>' ; } } |
Sau đó chạy lên với URL http://localhost/mvc/admin.php?c=news&a=index thì sẽ xuất hiện hình như sau:
Bạn thấy config đã xuất hiện trong instance của Controller và nó có hai key như trong hình vẽ.
4. Thao tác với thư viện config trong Controller
Bây giờ bạn chỉnh lại controller
News_Controller.php
với nội dung như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?php if ( ! defined( 'PATH_SYSTEM' )) die ( 'Bad requested!' ); class News_Controller extends FT_Controller { public function indexAction() { // Lấy config có key là csrf_token_name echo '<h3>Token: csrf_token_name: ' . $this ->config->item( 'csrf_token_name' ) . '</h3>' ; // Thay đổi giá trị cho csrf_token_name $this ->config->set_item( 'csrf_token_name' , 'new_token' ); echo '<h3>Token: csrf_token_name (changed): ' . $this ->config->item( 'csrf_token_name' ) . '</h3>' ; // Tạo cấu hình mới tên website_name $this ->config->set_item( 'website_name' , 'freetuts.net' ); echo '<h3>key website_name: ' . $this ->config->item( 'website_name' ) . '</h3>' ; } } |
Chạy controller này lên bạn sẽ thấy giao diện như sau:
Như vậy là bạn đã biết cách sử dụng thư viện này rồi phải không nào.
5. Lời kết
Phần cấu hình này ngoài file
config.php
ra bạn có thể tạo thêm một file bất kì và dùng hàm load()
để thực hiện lấy nội dung của nó. Đây là một thư viện đóng vai trò cũng khá quan trọng bởi mỗi một module sẽ luôn có những thông số cấu hình riêng và điều này giúp việc quản lý code dễ dàng hơn.
Bạn cần chú ý một số cách sử dụng mà ở phần 4 mình đã thực hiện vì ở các bài sau mình không giải thích thêm về nó nữa. Chúc bạn học tốt.
Nguồn: http://freetuts.net/mvc-php-viet-thu-vien-load-config-359.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