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


phpk框架簡介

PHPK是一個簡單易用,易於擴展的輕量級PHP框架。phpk不僅僅是一個php框架,也是一個js框架,內置一套全新的js內庫,完全摒棄了龐大的jquery,所有的前端都是一個全新的微世界。運行高效而不失功能強大,操作靈活而又能擴展自如。作為PHP框架里的“后起之秀”,PHPK秉承了那些優秀的PHP框架所共有的,並進行了很多微創新。

功能說明

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

 

使用說明

一、如何調用?

  把phpk文件夾下載到本地,然后在phpk文件夾上層建立index.php,里面代碼如下:

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

 然后訪問index.php,然后你就會看到“歡迎使用phpk框架!” 

二、如何配置?

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

<?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';       //權限認證方式

  項目配置文件繼承了項目總配置文件,也可以對項目總配置文件重寫。這樣做的好處是,增加了項目的靈活性。

三、如何使用模版?

首先要寫controller文件,在projects/www/controllers/indexController.class.php文件夾里,這樣寫:

<?php
class IndexController extends Controller
{
    function index ()
    {
        $welcome = "歡迎使用phpk框架!";
        $this->assign('welcome', $welcome);
        $this->display('welcome');
    }
}

模版文件支持layout,可以在projects/www/views/layouts/layout.php這樣寫,(這個文件的名字可以在項目里配置,也可以單獨指定)

<!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模版文件里這樣寫:

<?php echo $welcome;?>

phpk模版支持js和css簡寫調用:

{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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM