輕量級php框架phpk v1.0發佈

phpk框架簡介

PHPK是一個簡單易用,易於擴展的輕量級PHP框架。phpk不單單是一個php框架,也是一個js框架,內置一套全新的js內庫,徹底摒棄了龐大的jquery,全部的前端都是一個全新的微世界。運行高效而不失功能強大,操做靈活而又能擴展自如。做爲PHP框架裏的「後起之秀」,PHPK秉承了那些優秀的PHP框架所共有的,並進行了不少微創新。php

功能說明

  • OOP編寫風格,徹底依據面向對象的思想編寫
  • 多項目管理,共享數據緩存層
  • 自動壓縮js和css文件
  • 內嵌一個js微型內核,易於擴展
  • URL路由,支持3種路由模式
  • hook鉤子操做,支持系統內核外擴展
  • 助手函數,支持外圍函數擴展
  • 模版視圖,模版引擎支持視圖,支持本地緩存
  • wedgit,支持單獨的區塊加載
  • 插件機制,能夠很方面的引用第三方類庫
  • 多語言,支持多語言擴展
  • 多種加密方式
  • 多緩存機制
  • 多種數據庫引擎
  • 支持分佈式
  • 多權限認證機制
  • 支持自動偵測是wap仍是web瀏覽
  • 支持自動偵測客戶端語言

 

使用說明

1、如何調用?

  把phpk文件夾下載到本地,而後在phpk文件夾上層創建index.php,裏面代碼以下:css

<?php
include './phpk/base.php';
?>

 而後訪問index.php,而後你就會看到「歡迎使用phpk框架!」 html

2、如何配置?

若是第一步訪問成功,你就會在項目的根目錄發現多了幾個文件夾,分別是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

3、如何使用模版?

首先要寫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的內置模版引擎能夠不用本地緩存,直接內存輸出,也能夠在項目完成後直接調用緩存文件。

4、如何數據查詢?

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'");
    }
    
    
}

  

5、如何使用鉤子、助手函數和外圍庫?

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

相關文章
相關標籤/搜索