HANDSOMEROOT
Bài 04: MVC PHP - Tìm hiểu file FT_Common.php
- Nhận đường liên kết
- X
- Ứng dụng khác
Ở bài trước chúng ta đã tìm hiểu được sơ lược cách load controller trong project MVC PHP nhưng đó không phải là cách mà chúng ta sẽ sử dụng, vì vậy trong bài này ta sẽ sửa lại một số phần mà ở bài trước đã làm như sửa file admin.php, thêm file config init.php, xóa phương thức
load()
trong FT_Controller.php
.
Trước tiên bạn xem lại cấu trúc folder project của chúng ta.
Trong sơ đồ này ta có một file
FT_Common.php
, file này mục đích lưu trữ những hàm load hệ thống và trong bài này ta sẽ tìm hiểu nó.1. Tạo config cho module
Trước tiên bạn cần tạo một folder
config
năm trong folder admin
. Sau đó tạo một file init.php
và dán nội dung sau vào:
1
2
3
4
5
6
7
8
| <?php return array ( 'default_controller' => 'index' , // controller mặc định 'default_action' => 'index' , // action mặc định '404_controller' => 'error' , // controller lỗi 404 '404_action' => 'index' // action lỗi 404 ); |
Và đây là sơ đồ file:
Trong file này mình đã return về một mảng gồm các thông số cấu hình để chạy ứng dụng như thông số controller mặc định và thông số controller lỗi 404 (bài tiếp theo sẽ đề cập tới 404).
Có lẽ bạn sẽ thắc mắc tại sao phần cấu hình nằm trong file
system/config/config.php
mình đã tạo hai hằng số CONTROLLER_DEFAULT
và ACTION_DEFAULT
để xử Controller Default và Action Default rồi mà giờ lại tạo trong file init.php
. Đơn giản nếu ta đặt các thông số này trong phần system/config
thì tất cả các module đều có cấu hình chung. Tôi muốn mỗi module có thể tùy chỉnh và thay đổi thông số controller mặc định thì bắt buộc phải đưa nó vào admin/config
.
Bây giờ bạn mở file
system/config/config.php
và xóa đi hai hằng số CONTROLLER_DEFAULT
và ACTION_DEFAULT
đi nhé vì chúng ta không sử dụng nó.
Sau khi xóa xong ta phải đổi lại file
admin.php
, lý do là trong file này có sử dụng hai hằng số đó.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?php // Đường dẫn tới hệ thống define( 'PATH_SYSTEM' , __DIR__ . '/system' ); define( 'PATH_APPLICATION' , __DIR__ . '/admin' ); // Lấy thông số cấu hình require (PATH_SYSTEM . '/config/config.php' ); //mở file FT_Common.php, file này chứa hàm FT_Load() chạy hệ thống include_once PATH_SYSTEM . '/core/FT_Common.php' ; // Chương trình chính FT_load(); |
Ồ, nó hơi ngắn hơn trước phải không nào. Lý do là mình đã import vào file
FT_Common.php
và gọi đến hàm FT_Load()
nằm trong nó. Để hiểu rõ hơn (hàm TF_Load() đâu ra) thì ta qua phần 2 nhé.2. Tìm hiểu file FT_Common.php
File
FT_Common.php
dùng để chứa những hàm sử dụng trong quá trình load hệ thống. Ví dụ như phương thức load()
mà ta đã viết trong file FT_Controller.php
thì thay vì viết ở đây ta sẽ viết nó nằm trong file FT_Common.php
.
Bạn xóa phương thức
load()
trong FT_Controller
đi nhé, lúc này nội dung nó còn như sau:
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
| <?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/FT_Controller.php */ class FT_Controller { // Đối tượng view protected $view = NULL; // Đối tượng model protected $model = NULL; // Đối tượng library protected $library = NULL; // Đối tượng helper protected $helper = NULL; // Đối tượng config protected $config = NULL; /** * Hàm khởi tạo * * @desc Load các thư viện cần thiết */ public function __construct( $is_controller = true) { } } |
Tiếp bạn vào file
FT_Common.php
và dán nội dung sau vào:
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
| <?php if ( ! defined( 'PATH_SYSTEM' )) die ( 'Bad requested!' ); /** * Hàm chạy ứng dụng */ function FT_load() { // Lấy phần config khởi tạo ban đầu $config = include_once PATH_APPLICATION . '/config/init.php' ; // Nếu không truyền controller thì lấy controller mặc định $controller = empty ( $_GET [ 'c' ]) ? $config [ 'default_controller' ] : $_GET [ 'c' ]; // Nếu không truyền action thì lấy action mặc định $action = empty ( $_GET [ 'a' ]) ? $config [ 'default_action' ] : $_GET [ 'a' ]; // Chuyển đổi tên controller vì nó có định dạng là {Name}_Controller $controller = ucfirst( strtolower ( $controller )) . '_Controller' ; // chuyển đổi tên action vì nó có định dạng {name}Action $action = strtolower ( $action ) . 'Action' ; // Kiểm tra file controller có tồn tại hay không if (! file_exists (PATH_APPLICATION . '/controller/' . $controller . '.php' )){ die ( 'Không tìm thấy controller' ); } // Include controller chính để các controller con nó kế thừa include_once PATH_SYSTEM . '/core/FT_Controller.php' ; // Gọi file controller vào require_once PATH_APPLICATION . '/controller/' . $controller . '.php' ; // Kiểm tra class controller có tồn tại hay không if (! class_exists ( $controller )){ die ( 'Không tìm thấy controller' ); } // Khởi tạo controller $controllerObject = new $controller (); // Kiểm tra action có tồn tại hay không if ( !method_exists( $controllerObject , $action )){ die ( 'Không tìm thấy action' ); } // Chạy ứng dụng $controllerObject ->{ $action }(); } |
Các bạn thấy nội dung của nó na ná phương thức
load()
mà ta đã xóa ở FT_Controller
đúng không nào. Chỉ có sự khác nhau là:- Có lấy nội dung config trong file
admin/config/init.php
- Thay vì gọi đến hai hằng số mà ta đã xóa (
CONTROLLER_DEFAULT
vàACTION_DEFAULT
) thì ta sẽ htay nó bằng các giá trị config trong fileinit.php
. - Có include file
FT_Controller.php
để các lớp controller trongadmin
có thể kế thừa
Ok bây giờ bạn chạy lại URL như bài trước thì kết quả sẽ y chang nhau.
3. Chạy thử ứng dụng
Trước tiên bạn mở controller
News_Controller.php
lên và sửa lại nội dung như sau:
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 đó vào URL http://localhost/mvc/admin.php?c=news&a=index thì sẽ xuất hiện hình như sau là mọi chuyện đã xử lý xong:
Bạn có thắc mắc tại sao lại như hình không? Lý do mình sử dụng
print_r($this)
mà lớp này có kế thừa FT_Controller
nên nó có chứa các thuộc tính dạng protected
.4. Lời kết
Trong bài này chủ yếu mình sửa một số đoạn code và giải thích cách sử dụng file
FT_Common,php
để chứa những hàm xử lý riêng của hệ thống.
Trong bài các bạn cần chú ý các vấn đề sau:
- Có tạo mới file
admin/config/init.php
- Xóa đi phương thức
load()
trongFT_Controller.php
- Chỉnh lại file bootstrap
admin.php
và nó có gọi qua hàmFT_Load()
nằm trong fileFT_Common.php
- Thêm hàm
FT_Load()
vào fileFT_Common.php
Chúc các bạn học tốt!
Nguồn: http://freetuts.net/mvc-php-tim-hieu-file-ftcommon-php-357.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