PHPK是一個簡單易用,易於擴展的輕量級PHP框架。phpk不單單是一個php框架,也是一個js框架,內置一套全新的js內庫,徹底摒棄了龐大的jquery,全部的前端都是一個全新的微世界。運行高效而不失功能強大,操做靈活而又能擴展自如。做爲PHP框架裏的「後起之秀」,PHPK秉承了那些優秀的PHP框架所共有的,並進行了不少微創新。php
把phpk文件夾下載到本地,而後在phpk文件夾上層創建index.php,裏面代碼以下:css
<?php include './phpk/base.php'; ?>
而後訪問index.php,而後你就會看到「歡迎使用phpk框架!」 html
若是第一步訪問成功,你就會在項目的根目錄發現多了幾個文件夾,分別是plugins、data、projects、projects/www。固然還有根目錄下的config.inc.php,這個文件是項目總配置文件,代碼以下:前端
<?php //全局配置聲明在這個文件中. $CONFIG['system']['db']['driver'] = 'mysql';//數據庫類型 $CONFIG['system']['db']['charset'] = 'utf8';//數據庫編碼 $CONFIG['system']['db']['prefix'] = 'ig_';//表名前綴 $CONFIG['system']['db']['master']['host'] = 'localhost';//主庫地址 $CONFIG['system']['db']['master']['database'] = 'itest';//數據庫名稱 $CONFIG['system']['db']['master']['port'] = '3306';//默認端口 $CONFIG['system']['db']['master']['user'] = 'root';//數據庫賬號 $CONFIG['system']['db']['master']['password'] = '123456';//數據庫密碼 $CONFIG['system']['app']['allow_dir'] = array("www","wap","admin","tools");//系統容許的應用 $CONFIG['system']['app']['auto_detect'] = 1; //是否自動偵測是wap仍是web $CONFIG['system']['app']['defalut_web_path'] = 'www';//默認的應用目錄 $CONFIG['system']['app']['defalut_wap_path'] = 'wap';//默認的手機應用目錄 $CONFIG['system']['security'] = '_phpk_@#!%DFDS_'; // 系統的加密字符串 $CONFIG['language']['switch_on'] = 1; //是否打開語言包 $CONFIG['language']['default_lang'] = 'zh-cn';//默認語言 $CONFIG['language']['auto_detect'] = 1; //是否自動偵測語言 $CONFIG['language']['get_var'] = 'lang'; //前端get獲取語言包的字符 $CONFIG['language']['lang_list'] = 'zh-cn';//語言包列表,用逗號隔開
在projects/www文件夾下面也會多出一個項目配置文件config.inc.php,代碼以下:mysql
<?php //項目配置聲明在這個文件中. $CONFIG['debug'] = 1; // 項目的調試模式,1爲打開,0爲關閉 $CONFIG['route']['url_type'] = 2; // url模式,1爲字符串模式,2爲pathinfo模式 $CONFIG['route']['default_controller'] = 'index'; // 默認控制器文件 $CONFIG['route']['default_action'] = 'index'; // 默認action接口 $CONFIG['output']['charset'] = 'utf-8'; // 頁面字符集 $CONFIG['output']['errorlog'] = 0; // 是否記錄錯誤日誌 $CONFIG['output']['forceheader'] = 0; // 強制輸出頁面字符集,用於避免某些環境亂碼,0爲關閉,1爲開啓 $CONFIG['output']['gzip'] = 0; // 是否採用 Gzip 壓縮輸出 $CONFIG['output']['tmpl_cache'] = 0; // 是否開啓模版緩存,0爲內存輸出作調試模式用,1爲檢測緩存輸出作開發模式用,2爲調用緩存輸出,3作正式環境用 $CONFIG['output']['layout_on'] = 1; // 是否開啓佈局,0爲關閉,1爲開啓 $CONFIG['output']['layout_name'] = 'layout'; // 佈局的文件 $CONFIG['output']['layout_item'] = '{_content}'; // 佈局的內部替換的標籤名稱 $CONFIG['output']['tmpl_suffix'] = '.php'; // 模版的後綴 $CONFIG['output']['default_tmpl'] = 'default'; // 默認模版目錄 $CONFIG['output']['csszip'] = 1; // 是否壓縮css文件,1爲壓縮,0爲不壓縮 $CONFIG['output']['jszip'] = 1; // 是否壓縮js文件,1爲壓縮,0爲不壓縮 $CONFIG['loader']['libs'] = array(); // 是否加載外圍的類 $CONFIG['loader']['helpers'] = array(); // 是否加載外圍函數 $CONFIG['loader']['hooks'] = array(); // 是否加載鉤子 $CONFIG['session']['prefix'] = 'pk_'; // session的前綴 $CONFIG['session']['id'] = 'phpk'; // session的id $CONFIG['session']['expire'] = 1200; // session的超時時間 $CONFIG['session']['auto_start'] = 1; // 是否自啓動session,1爲開啓,0爲關閉 $CONFIG['cookie']['prefix'] = 'pk_'; // cookie的前綴 $CONFIG['cookie']['path'] = '/'; // cookie的有效路徑 $CONFIG['cookie']['expire'] = 1200; // cookie的超時時間 $CONFIG['cookie']['domain'] = ''; // cookie的做用域 $CONFIG['cache']['type'] = 'file'; // 緩存類型 $CONFIG['cache']['table'] = 'tb_cache'; // 緩存表的名稱 $CONFIG['cache']['prefix'] = 'cache_'; // 緩存前綴 $CONFIG['cache']['time'] = 3600; // 緩存過時時間 $CONFIG['cache']['check'] = true; // 是否進行緩存的數據校驗 $CONFIG['cache']['compress'] = true; // 是否緩存壓縮 $CONFIG['auth']['auth_on'] = 1; //是否啓動權限認證 $CONFIG['auth']['auth_type'] = 'phpk'; //權限認證方式
項目配置文件繼承了項目總配置文件,也能夠對項目總配置文件重寫。這樣作的好處是,增長了項目的靈活性。jquery
首先要寫controller文件,在projects/www/controllers/indexController.class.php文件夾裏,這樣寫:git
<?php class IndexController extends Controller { function index () { $welcome = "歡迎使用phpk框架!"; $this->assign('welcome', $welcome); $this->display('welcome'); } }
模版文件支持layout,能夠在projects/www/views/layouts/layout.php這樣寫,(這個文件的名字能夠在項目裏配置,也能夠單獨指定)web
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><?php echo $welcome;?></title> </head> <body> {_content} </body> </html>
而後在projects/www/views/default/index.php模版文件裏這樣寫:sql
<?php echo $welcome;?>
phpk模版支持js和css簡寫調用:thinkphp
{css cssfile1,cssfile2} {js jsfile1,jsfile2}
也支持一些靜態調用方法,好比:{img}{js}{css}{pro}{url}{public}等,儘可能作到簡單、精簡、規範。
phpk的內置模版引擎能夠不用本地緩存,直接內存輸出,也能夠在項目完成後直接調用緩存文件。
phpk框架摒棄了通常框架的orm(關係數據庫映射),讓用戶更加容易上手。下面是一個模型用例(projects/www/model/indexModel.class.php):
<?php class IndexModel extends Model{ /** * 檢測用戶名 * @param string $username * @param string $password * @return multitype: */ function checkUser($username,$password){ $sql = "select uid,username,group_id from tb_user where username='$username' and password='$password'"; return $this->select($sql,1); } /** * 更新用戶登陸信息 * @param int $uid */ function updateUser($uid,$arr = array()){ $data = array('last_login_time'=>time(),'last_login_ip'=>getIp()); $result = array_merge($data, $arr); $this->update("tb_user", $result,"uid='$uid'"); } }
phpk框架沿用了codeigniter的鉤子思想,借鑑了thinkphp的行爲體系,堅持易用簡單的原則。配置鉤子,首先須要在項目配置文件里加上:
$CONFIG['loader']['hooks'] = array( 'pre_controller' => 'auth' ); // 是否加載鉤子
key值參考下面的說明:
* pre_system * 系統執行的早期調用.僅僅在系統類和配置項加載完畢的時候. 沒有執行路由或者其它的過程. * pre_controller * 在調用你的任何控制器以前調用.此時所用的基礎類,路由選擇和安全性檢查都已完成. * post_controller_constructor * 在你的控制器實例化以後,任何方法調用以前調用,傳入的參數爲實例化的控制器。 * post_controller * 在你的控制器徹底運行以後調用,傳入的參數爲實例化的控制器。 * display_override * output.tmpl_cache=0時截取調試模式下的模版, 用來在系統執行末尾向web瀏覽器發送最終頁面,傳入參數爲解析後的模版內容。調用後記得exit。 * cache_override * 截取cache模式下的模版,這可讓你使用本身的方法來顯示緩存文件,傳入參數爲解析後的緩存文件。調用後記得exit。 * post_system * 在最終着色頁面發送到瀏覽器以後,瀏覽器接收完最終數據的系統執行末尾調用
value值爲須要加載的文件名,hook的文件放在projects/controllers/hooks/authHook.class.php
助手文件和外圍庫的加載更加簡單,只須要這樣寫配置文件便可:
$CONFIG['loader']['libs'] = array('html','csv'); // 是否加載外圍的類 $CONFIG['loader']['helpers'] = array('dir','str'); // 是否加載外圍函數
固然你也能夠擴展本身的助手文件和類庫,把他們分別放在extensions/functions/和extensions/classes/裏面,系統會先判斷項目加載文件是否存在,而後再去判斷系統內核文件。
下載地址:http://code.taobao.org/p/phpk/file/2590/phpk.rar
SVN地址: http://code.taobao.org/p/phpk/src/
項目交流羣:61591845