这款PHP框架,经历了6年发展,开发了十几个商业项目。
众产风格极易理解,目录结构清晰,文件极少,支持前后端分离,DBA与后端逻辑可分离。
zcommon/
common.php
data.php
mysql.php
pdo.php
dbajax.php
config.php
examples/
/jscss/
serverdata.php
demo.php
demo.pro.php
demo_update.php
demo_update.pro.php
upload.php
init.php
封装了 Ajax函数调用、Url参数拼接函数、Application对象、CSV导出、用户安全输入、文件操作等
封装了数据层,get/getone/set/execute/delete数据库接口,set接口实现了insert和update SQL命令整合pdo.php
PDO驱动层。由数据层data.php引用,实现了prepare SQL预处理。mysql.php
MYSQLi驱动层。由数据层data.php引用,实现了prepare SQL预处理。dbajax.php
跨服访问层。由数据层data.php引用,实现了可控的HTTP远程数据库接口,自定义授权函数。
配置一个或多个数据库服务器连接参数,配置加密因子。
class ciy_config {
public static $conmmonkey = 'abcdefg';//做数据加解密时的加密因子,每个项目都不要相同。
public static function getdb($index = 1)
{
$ret = array();
if($index == 1)
{
$ret['type'] = 'mysql';//mysql-tab 多主多从读写分离+分库模式;mysql-ms 单库多主多从读写分离模式。详见data.php注释
$ret['charset'] = 'utf8';
$ret['name'] = 'ciyphp';
$ret['port'] = 3306;
$ret['host'] = '127.0.0.1';
$ret['user'] = 'ciyphp';
$ret['pass'] = 'CiyPHP';
if(stripos($_SERVER['HTTP_HOST'],'local') !== false)
{
$ret['pass'] = 'CiyPHP';
}
}
else if($index == 2)
{
//$ret['type']... 第二个数据库服务器集群
}
return $ret;
}
}
init.php 路径配置及框架引用。项目中所有php都应先引用init.php
特别的,目录默认使用/
结尾
defined('PATH_ROOT') || define('PATH_ROOT', $_SERVER['DOCUMENT_ROOT'].'/'); //web根目录。
defined('PATH_PROGRAM') || define('PATH_PROGRAM', PATH_ROOT.'examples/'); //指定项目后端目录,可以实现前后端不同目录管理。
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_ROOT . 'acommon.php';
例子程序,演示框架基本代码编写流程。包含数据增删改查、导出等基本功能。
调用例子函数之前,请先用d_test.sql在mysql中建立d_test/d_test_bak表。
//demo.php
...
//demo.pro.php
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_PROGRAM进行修改。
与其他框架不同,前端无模板,而直接使用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)
{
}
请先浏览演示
https://github.com/boiciy/ciyphp