Simple, high performance,C extension framework for php7!简单、高性能、优雅的php c扩展框架!
最新版本:3.0.2
官方网站:Gene框架 http://www.php-gene.com/
框架核心能力:
- 高性能:极简架构,超过yaf、Phalcon等同类型C扩展框架的功能及性能;
- MVCS:瘦MC模式,业务逻辑封装到service;
- 路由:完整支持HTTP REST请求;底层采用二叉树查找算法,性能强劲;
- 钩子:路由支持全局、局部钩子支持;
- 依赖注入:参考 Java Spring 的 Bean 设计思想,实现了简易好用的 IoC;全局注入,局部控制反转等;
- 中间件:AOP (面向切面编程),配置文件注册对象,调用方便且解耦;
- 工厂:提供全局工厂单例支持;
- 数据库:封装高性能orm类库;
- 配置:配置缓存到进程,修改自动更新;
- 长连接:按进程保持的长连接,支持Mysql/Redis/Memcached;持久连接断开自动检测;
- 视图:方式一、使用编译模板引擎,支持模板标签,支持模板缓存;方式二、使用原生PHP做模板引擎;两种方式均支持布局、属性赋值、对象引用等;
- 命令行:封装了命令行开发基础设施,可快速开发控制台程序、守护进程;
- 缓存:支持两种缓存,一是方法级定时缓存;二是实时版本缓存(创新功能:高效的实时缓存方案,轻松解决复杂缓存的更新,比如分页数据的缓存);
- 自动加载:基于 PSR-4;
- 其他:redis、memcached类库二次封装;
框架的入口是gene_application类,加载配置文件并启动:
简单运行:
<?php
$app = new \Gene\Aplication();
$app->load("router.ini.php")
->load("config.ini.php")
->run();
框架的基础是基于进程级缓存模块实现了一个高性能的强大路由解析以及配置缓存; 路由强大灵活,支持回调、rest、http请求方式(get,post,put,patch,delete,trace,connect,options,head)等:
<?php
$router = new \Gene\Router();
$router->clear()
//定义get
->get("/",function(){
echo "index get";
})
//定义post
->post("/",function(){
echo "index post";
})
//分组模式
->group("/admin")
->get("/:name/",function($params){
var_dump($params);
})
->get("/:name.:ext",function($params){
var_dump($params);
})
->get("/:name/sasoud",function($params){
var_dump($params);
})
->get("/blog/:ext/baidu",function($params){
echo 'baidu';
return array('return'=>1);
},"auth@clearAll")
->group()
->get("/index",function(){
echo 'index';
})
//定义404
->error(404,function(){
echo " 404 ";
})
//定义自定义钩子
->hook("auth",function(){
echo " auth hook ";
})
//全局前置钩子
->hook("before", function(){
echo " before hook ";
})
//全局后置钩子
->hook("after", function($params){
echo " after hook ";
if(is_array($params))var_dump($params);
});
配置类支持bool、int、long、string、array、常量等数据类型:
<?php
$config = new \Gene\Config();
$config->clear();
$config>set("dsfsdfsd",array('_url'=>array('sd'=>'sdfsdf222','sds'=>'sdfsf678'),'port'=>3307));
支持快捷存与取(.分隔):
$config->set("dsfsdfsd.port",'test');
$config->get("dsfsdfsd.port");
数据库支持orm操作:
<?php
$config = array (
'dsn' => 'mysql:dbname=test;host=127.0.0.1;port=3306;charset=utf8',
'username' => 'root',
'password' => '',
'options' => array(PDO::ATTR_PERSISTEN
5F8F
T => true)
);
$abc = new Gene\Db\Mysql($config);
// 查询全部
var_dump($abc->select('user', ["id", "name","time"])->order("id desc")->limit(0, 1)->all());
// 原生查询
var_dump($abc->select('user', ["id", "name","time"])->limit(0, 1)->execute()->fetch());
// 条件查询
var_dump($abc->select('user', ["id", "name","time"])->where("id=:id and name=:name",[":name"=>"wuya1", ":id"=>5])->row());
// 简单插入
var_dump($abc->insert('user', ["name"=>"wuya","time"=>"2018-12-21"])->lastId());
// 批量插入
var_dump($abc->batchInsert('user', [["name"=>"wuya1","time"=>"2018-12-21"],["name"=>"wuya2","time"=>"2018-12-22"]])->affectedRows());
// 简单更新
var_dump($abc->update('user', ["name"=>"wuya55","time"=>"2018-12-24"])->where("id=?", [4])->affectedRows());
// 删除操作
var_dump($abc->delete('user')->where("id=?", 4)->affectedRows());
// in条件更新
var_dump($abc->update('user', ["name"=>"wuya55","time"=>"2018-12-24"])->where("id=?", [3])->in(" and id in(?)", [3,4])->affectedRows());
// in 查询
var_dump($abc->select('user', ["id", "name","time"])->where("id=?", [3])->in(" and id in(?)", [3,4])->row());
// sql执行
var_dump($abc->sql("select * from user where id=?", [3])->in(" and id in(?)", [3,4])->order("id desc")->limit(0, 1)->row());
其他类:\Gene\Controller、\Gene\Db、\Gene\View、\Gene\Request、\Gene\Response、\Gene\Session、\Gene\Reg、\Gene\Load、\Gene\Exception等,详见文档;
安装:
phpize
./configure --enable-gene=shared
make
make install
DEMO:
index.php 启动文件
config.ini.php 配置文件
router.inc.php 路由文件
案例一: 湖北省教育用户认证中心(全省几百万学生、教育用户的登录入口) http://open.e21.cn/
案例二: 尚动电子商务平台
案例三: 生材网 https://www.materialw.com/
php5的版本 :https://github.com/sasou/php-gene