1. Trang chủ
  2. » Khoa Học Tự Nhiên

frameworkx

13 265 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

đa

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 web2. Libraries: Chứa các thư viện do người dùng tự định nghĩa3. 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.phpa.Modules: Chứa các folder module được xây dựng theo cấu trúc MVCb.Templates: “Đang mở rộng”, dự tính là phần chứa giao diện html của template engineAssets: 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 ServerVí dụ: D:\VertrigoServ\www\2. PATH_BASE: là patch hiện tại của framework trên server3. PATH_APP: là patch của folder application trên server4. PATH_WEB: là patch của folder website trên server5. PATH_SYSTEM: là patch của folder system trên serverNgoà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 definedefine('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ỤNGMặ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, ControllerMộ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 mainController:Class Main extends PS_Controller{function __construct(){parent::__construct();}function index(){$this->view('main');}}View:FRAMEWORK<br/> <hr/>Hello world<hr/>Kết quả:CONTROLLERController 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: blog2. Controller: blog3. 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: blog2. Controller: register3. Method: index_ Thêm như thế này:http://localhost/blog/register/timeHệ thống sẽ hiểu:1. Module: blog2. Controller: register3. Method: timeCode demo:Class Register extends PS_Controller{function __construct(){parent::__construct();}// http://localhost/blog/registerfunction index(){echo 'trang dang ky';}// http://localhost/blog/register/timefunction time(){echo NOW;}// http://localhost/blog/register/test , with protected or private result is: permission deniedprivate 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ục2. global_get: lấy biến toàn cục3. global_unset: xóa biến toàn cục4. 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.URIKhác với GET, uri là phần tham số phía sau của 1 moduleVD: http://localhost/ibet6888/blog/blog/index/testKết quả:Code:Class Blog extends PS_Controller{function __construct(){parent::__construct();}function index($text='blog'){ echo 'trang '.$text;}}Như vậy mặc định nếu ko có uri test thì kết quả sẽ là trang blog ngược lại là trang testVIEWCách load 1 view trong controller$this->view('main');Khi mà tại code view có biến php, ta phải khai báo nó ở controller.VD:FRAMEWORK HETHONGWEB<br/><hr/>hello world <?=$text;?><hr/>Ta phải khai báo$this->view('main', array('text' => 'noi dung'));Trường hợp sử dụng view như một biến nội dung (tức gán nội dung view vào 1 biến), ta viết:Return $this->view('main', true);HoặcReturn $this->view('main', array('text'=>'noi dung'),true);Lưu ý: Đây là cách load 1 view ở trong 1 module, ở một số trường hợp ta muốn sử dụng lại 1 view ở một module khác:VD:1. Module Header -> view: header.php , navbar.php2. Module Main -> view: content.php , abc.php Nếu Module Main sử dụng navbar.php tại module Header, ta viết:$this->view('header/navbar');MODELModel là thành phần giao tiếp với CSDL, khi tạo Class phải extends Class cha là PS_ModelClass Main extends PS_Model{function __construct(){parent::__construct();}function content(){$q = $this->query("SELECT * FROM ".$this->prefix()."content");return $q->fetch_assoc();}}Ở controller muốn sử dụng model, ta viết:Class Main extends PS_Controller{function __construct(){parent::__construct();$this->model('main');}function show(){print_r($this->model->main->content());}}Hoặc nếu 1 model ở 1 module khác thì ta khai báo:$this->model('header/navbar');//sử dụng$this->model->navbar->function(); Lưu ý: Framework hỗ trợ multi database và mặc định database sẽ được cấu hình tại config/database.php//server 1$database['default']['servername'] = 'localhost';$database['default']['database'] = 'database';$database['default']['username'] = 'root';$database['default']['password'] = 'vertrigo';$database['default']['prefix'] = 'ib_';$database['default']['driver'] = 'mysql';$database['default']['charset'] = 'utf8'; //font dữ liệu query$database['default']['cache']['enable'] = true; //cho phép cache query$database['default']['cache']['time'] = 30; //thời gian cache query//server 2/*$database['backup']['servername'] = 'localhost';$database['backup']['database'] = 'test';$database['backup']['username'] = 'root';$database['backup']['password'] = 'vertrigo';$database['backup']['prefix'] = '';$database['backup']['driver'] = 'mysql';$database['backup']['charset'] = 'latin1';$database['backup']['cache']['enable'] = false;*/Nếu backup được khai báo, khi query dữ liệu tại backup, ta viết:$this->backup->query() , $this->backup->prefix()Một số phương thức dùng cho đối tượng $a = query():1. $a->fetch_assoc() : biểu diễn dữ liệu theo dạng mảng 2 chiều, có thể dùng foreach để lấy. ( lấy id và tên sản phẩm tại dòng thứ 1 : $a[1][‘product_id’] , $a[1][‘product_name’] ).2. $b = $a->num_rows() : đếm dữ liệu được lấy.3. $b = $a->result() : lấy 1 dòng dữ liệu ($b[‘category_id’] , $b[‘category_name’] ).MODULEFramework viết theo mô hình HMVC (nhiều MVC tạo thành ứng dụng), ứng dụng được tạo thành do việc include lẫn nhau giữa các module. Khi có request (GET, POST) được gửi từ module cha, các module con được include cũng có thể nhận được. Để có thể load 1 module khác từ module hiện tại, ta viết:<b>MODULE BLOG INCLUDE:</b> <? $this->module('blog'); ?><hr/><b>MODULE BLOG INCLUDE:</b> <? $this->module('blog', array('blog 2')); ?>Kết quả:Nếu muốn sử dụng 1 module để gán vào 1 biến, ta viết:<b>MODULE BLOG INCLUDE:</b> <? echo $this->module('blog', true);?><hr/><b>MODULE BLOG INCLUDE:</b> <? echo $this->module('blog', array('blog 2'), true);?>Lưu ý: cách thức truy cập một module giống như việc truy cập bằng thông qua uri của trình duyệt. CACHINGModule CachingCaching là việc tạo một file html đại diện cho một module, việc này sẽ tránh việc module truy xuất đến CSDL. Làm ứng dụng web chạy nhanh hơn bao giờ hết Một VD về caching:Caching của framework có thể cache riêng lẽ từng module, bởi nếu cache cả trang, một số module cần thay đổi dữ liệu liên tục sẽ không thể hoạt động.Trường hợp 1 trang sử dụng 1 module 2 lần, nhưng cách thức sử dụng lại khác nhau ! dữ liệu cache trả về sẽ độc lập với 2 module giống nhau. (bởi mỗi module trên 1 trang sẽ được đánh dấu theo ID). Hơi khó hiểu nhưng có thể hình dung như sau: Trang A include 2 module cùng có tên B, nội dung module B có 2 button là C và X, module B.1 chọn C và module B.2 chọn X. Framework sẽ tạo ra 2 cache cho 2 module đã được include. Do đó B.2 sẽ không bao giờ có cache giống B.1, trừ khi B.2 cũng chọn button C giống B.1.Để caching một module ta viết code chèn vào method của controller muốn cache:$this->set('cache', 60); //caching 60 phútQuery Caching 123doc.vn

Ngày đăng: 30/12/2012, 20:01

Xem thêm: frameworkx

TÀI LIỆU CÙNG NGƯỜI DÙNG

w