Cấu trúc thư mục framework:
Application: thư mục chứa ứng dụng web.
1. Config: Chứa các file cấu hình web
2. Libraries: Chứa các thư viện do người dùng tự định nghĩa
3. Website: Chia làm môi trường theo folder, có thể tùy chỉnh biến
$config['config']['application_default'] trong file config/config.php
a.Modules: Chứa các folder module được xây dựng theo cấu trúc
MVC
b.Templates: “Đang mở rộng”, dự tính là phần chứa giao diện html
của template engine
Assets: chứa các thành phần file GUI, như css, ảnh, và js được tích hợp vào
framework.
System: là hệ thống cốt lõi của framework, bao gồm các thành phần helper (hàm
đơn lẻ), libraries (class thư viện)
Những file này có thể đổi tên thông qua file Index.php ở thư mục chính:
$application_folder = 'application';
$website_folder = 'website';
$system_folder = 'system';
$assets_folder = 'assets';
CÁC HẰNG ĐƯỢC HỖ TRỢ
1. DS: là hằng mang ý nghĩa là dấu / hoặc \ tùy theo môi trường Server
Ví dụ: D:\VertrigoServ\www\
2. PATH_BASE: là patch hiện tại của framework trên server
3. PATH_APP: là patch của folder application trên server
4. PATH_WEB: là patch của folder website trên server
5. PATH_SYSTEM: là patch của folder system trên server
Ngoài ra ta có thể thêm các hằng khác vào framework thông qua file defines.php ở config/config.php
//khởi tạo define
define('WEB_URL', $config['config']['web_url']);
define('WEB_TYPE', $config['config']['web_type']);
define('WEB_TPL', WEB_URL.'/application/website/pc/templates/default');
define('WEB_ASSETS', WEB_URL.'/assets');
define('IP', $_SERVER['REMOTE_ADDR']);
define('NOW', time());
KHỞI TẠO ỨNG DỤNG
Mặc định framework sẽ run module main và method là index, có thể cấu hình nó trong config/config.php
$config['config']['module_default'] = 'main';
$config['config']['module_construct_default'] = 'index';
Cấu trúc một module chia làm 3 phần là Model, View, Controller
Một module có thể bao gồm nhiều file controller , models và views. Mặc định khi
một module được load nó sẽ load theo main/{tên file trùng với tên module}/
{tên class trùng với tên module}/index , với index được cấu hình ở config.php.
Một VD về module main
Controller:
Class Main extends PS_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$this->view('main');
}
}
View:
FRAMEWORK
<br/>
<hr/>
Hello world
<hr/>
Kết quả:
CONTROLLER
Controller là thành phần chủ chốt tạo nên một tính năng module , một Controller được khai báo và
extends Class cha PS_Controller như sau:
Class Register extends PS_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
}
}
Do đó, Controller của framework có thể truy cập thông qua trình duyệt với dạng như sau:
http://Localhost/ blog
Ở hoạt động bên dưới framework sẽ hiểu là ta đã truy cập vào:
1. Module: blog
2. Controller: blog
3. Method: index
_ Ngoài ra nếu trình duyệt như thế này:
http://localhost/blog/register
Hệ thống sẽ hiểu:
1. Module: blog
2. Controller: register
3. Method: index
_ Thêm như thế này:
http://localhost/blog/register/time
Hệ thống sẽ hiểu:
1. Module: blog
2. Controller: register
3. Method: time
Code demo:
Class Register extends PS_Controller
{
function __construct()
{
parent::__construct();
}
// http://localhost/blog/register
function index()
{
echo 'trang dang ky';
}
// http://localhost/blog/register/time
function time()
{
echo NOW;
}
// http://localhost/blog/register/test , with protected or private result is: permission denied
private function test()
{
}
}
Ở một số trường hợp bảo mật, method sẽ được gán là protected hoặc private để tránh sự truy cập trực
tiếp bằng uri trình duyệt ( VD: http://localhost/blog/register/test kết quả sẽ cấm người dùng truy cập
thông qua đây) .
Một số phương thức mà Controller hỗ trợ:
1. global_set: gán biến toàn cục
2. global_get: lấy biến toàn cục
3. global_unset: xóa biến toàn cục
4. get: lấy một biến toàn cục (tương tự như việc khai báo thêm property)
5. set: gán một giá trị toàn cục. (việc gán có thể thêm mới hoặc làm thay đổi một số option của
controller như caching, sẽ có ở phần dưới)
6. helper: include 1 helper chứa các function cần thiết vào controller.
7. lib: import 1 class thư viện vào controller.
8. view: để load 1 view vào controller.
9. model: để load 1 model vào controller.
10. module: để load 1 module khác vào controller này.
Lưu ý: Với global_get/set/unset: một ví dụ cho việc sử dụng biến toàn cục này là ko bị giới hạn bởi dòng
chảy dữ liệu. Dòng 1 get tên là title, dòng 100 set title=1000, kết quả xuất ra sẽ là title 1000. Tuy nhiên
global_ chỉ hoạt động tốt tại tầng View.
URI
Khác với GET, uri là phần tham số phía sau của 1 module
VD:
http://localhost/ibet6888/blog/blog/index/test
Kết quả:
Code:
Class Blog extends PS_Controller
{
function __construct()
{
parent::__construct();
}
function index($text='blog')
{