一款極簡PHP框架。目錄結構簡單。支援前端/後端/DBA隔離開發。
眾產未來 - IT工程 - 全棧工程師
WEB PHP框架
這款PHP框架,經歷了5年發展,開發了十幾個商業專案。
眾產風格極易理解,目錄結構清晰,檔案極少,支援前後端分離,DBA與後端邏輯可分離。
目錄結構
zcommon/
common.php
data.php
mysql.php
dbajax.php
config.php
examples/
/jscss/
serverdata.php
appcommon.php
demo.php
demo.pro.php
demo_update.php
demo_update.pro.php
upload.php
init.php
common.php 常用公共函式庫。
封裝了 Ajax函式呼叫、Url引數拼接函式、Application物件、CSV匯出、使用者安全輸入、檔案操作等
appcommon.php
專案內公共函式庫。
封裝了 報錯顯示、數字/字串加解密函式、log儲存、頁面分頁顯示等
data.php 應用資料層類庫。
封裝了資料層,get/getone/set/execute/delete資料庫介面。
mysql.php
MYSQL驅動層。由資料層data.php引用,set介面實現了insert和update SQL命令整合。
dbajax.php
跨服訪問層。由資料層data.php引用,實現了可控的遠端資料庫介面,自定義授權函式。 serverdata.php
config.php 配置檔案。
配置一個或多個數據庫伺服器連線引數,配置加密因子。
$GLOBALS['commonkey'] = 'zid4Akto8';//做資料加解密時的加密因子,請自行更改。 $GLOBALS['cachedir'] = PATH_ROOT.'cache/';//實現application功能。用來儲存臨時資料。 $GLOBALS['db_1']['type'] = 'mysql';//mysql-tab 多主多從讀寫分離+分庫模式;mysql-ms 單庫多主多從讀寫分離模式。 $GLOBALS['db_1']['charset'] = 'utf8'; $GLOBALS['db_1']['name'] = 'dbname'; $GLOBALS['db_1']['port'] = 3306; $GLOBALS['db_1']['host'] = '127.0.0.1';//填寫web URL地址,則為json方式訪問遠端serverdata.php。 $GLOBALS['db_1']['user'] = 'root'; $GLOBALS['db_1']['pass'] = 'password'; //$GLOBALS['db_2']... 第二個資料庫伺服器叢集 if(stripos($_SERVER['HTTP_HOST'],'local') !== false)//本地除錯時的差異配置。 { $GLOBALS['db_1']['pass'] = 'wkxroot'; }
init.php 路徑配置及框架引用。專案中所有php都應先引用init.php
特別的,目錄預設使用/
結尾
defined('PATH_ROOT') || define('PATH_ROOT', $_SERVER['DOCUMENT_ROOT'].'/'); //web根目錄。 defined('PATH_DIR') || define('PATH_DIR', PATH_ROOT.'examples/'); //指定專案目錄 defined('PATH_PROGRAM') || define('PATH_PROGRAM', PATH_DIR.''); //指定專案後端目錄,可以實現前後端不同目錄管理。 defined('NAME_SELF') || define('NAME_SELF', $_SERVER['PHP_SELF']); require PATH_ROOT . 'zcommon/config.php'; require PATH_ROOT . 'zcommon/common.php'; require PATH_ROOT . 'zcommon/data.php'; require PATH_PROGRAM . 'appcommon.php';
demo.php demo.pro.php demo_update.php demo_update.pro.php
例子程式,演示框架基本程式碼編寫流程。包含資料增刪改查、匯出等基本功能。
呼叫例子函式之前,請先用d_test.sql在mysql中建立d_test/d_test_bak表。
//demo.php <?php require 'init.php'; require PATH_PROGRAM . '/' . NAME_SELF . '.pro.php'; ?><!DOCTYPE html> <html> ...
//demo.pro.php <?php $mydata = new ciy_data(); ciy_runJSON(); $pageno = (int)get('page', 1); $pagecount = 20; $where = ''; $rows = $mydata->get($pageno,$pagecount, 'd_test', $where,'id desc'); function json_setact() {//Ajax互動函式,ciy_runJSON()呼叫。 global $mydata; $act = post('act'); 資料處理... return succjson(); }
部署方式
web根目錄下拷貝zcommon目錄,更改config.php配置檔案。即可完成檔案部署。
專案目錄可以在子目錄,也可以在根目錄。只需對init.php 中的PATH_DIR進行修改。
框架建議
與其他框架不同,前端無模板,而直接使用php。建議前端html化。
檔名命名習慣:
*.php / *.pro.php 成對出現。*.php引用*.pro.php,前端Ajax呼叫。都在*.pro.php中完成。*.pro.php直接訪問無效。 *.html / *.php 成對出現。*.html通過Ajax初始化及資料請求。
後端變數取名,建議getone函式使用$xxrow
,get函式使用$xxrows
。
$xxrow = getone();//返回單條資料 $xxrows = get();//返回多條資料 foreach($xxrows as $row) { }
框架演進計劃
逐步支援各類庫函式及SDK
如二維碼生成、excel匯入匯出、html爬蟲、簡訊郵件等等。
資料庫結構體文件生成工具、自動化程式碼生成工具、簡易後端介面框架、定時執行任務。
以上函式庫都已完成(但未經大規模商用驗證),如有需要可以直接留言,作者將原始碼傳送至信箱。
Socket後端框架及前端CiySocket.js庫
基於Workerman的PHP Socket框架,採用埠併發機制,基本實現了無需變數鎖的程式設計方法。降低開發難度,提升開發效率。
無需變數鎖程式設計,和沒有鎖意識的程式設計是兩回事,很多程式設計師無奈的發現,使用者量上來了,程式變的不穩定,原因在這裡
後臺管理練習框架及common.js庫
提供一個後臺管理UI框架。
幫助程式設計師逐漸放棄使用大型複雜的前端框架,進而一步一步練習搭建UI框架,全面掌控。
越大型複雜的框架整合度越高,基礎開發成本極低,但個性化開發成本較高,精通難度大。