hunzsig / h-php
一个纯净后端php框架,依赖swoole,支持http/websocket。结合ZendFrame/ThinkPHP/laraval编写代码,数据处理层enter->io->bean->model。IO自定义便捷式加密,与前端h-react-library嵌合。PDO式ORM结合redis,完善的表连贯操作,并自动优化持久层的CURD,如连表自动前缀,类型自动转义/转换/解释。自带打包,可将php代码加密到难以恢复的程度。
v1.0.0
2019-05-06 12:54 UTC
Requires
- php: >=7.2
This package is auto-updated.
Last update: 2024-11-13 20:11:21 UTC
README
你可以通过git下载:git clone git@github.com:hunzsig/h-assets.git
也可以通过composer:composer install
建造一个index.php
你可以在根目录构建一个index.php
如果是composer你应该把 /h-php/hHttp.php 修改为 /verdor/hunzsig/h-php/hHttp.php
<?php define('CONFIG_PATH', __DIR__ . '/config.php'); // 可宏定义一个配置文件路径,覆盖原有的config $hphpPath = realpath(__DIR__ . '/h-php'); require __DIR__ . "/h-php/hHttp.php"; $hphp = new Main(); // 访问 http://127.0.0.1:port/external/helloWorld $hphp->external('helloWorld', __DIR__ . '/myExternal/helloWorld.php'); $hphp->external('sql', __DIR__ . '/myExternal/sql.php'); $hphp->run(); ?>
打包
打包会在设定的根目录下生成一个dist目录,加密混淆并压缩优化
打包需要 -c 参数来定义你的config文件
根目录情况下:
php ./h-php/hPackage.php -c ./config.php php ./h-php/hPackage.php -c ./h-php/hPhp.config.php // 默认情况下 php ./h-php/hPackage.php -c ./verdor/hunzsig/h-php/hPhp.config.php // 默认composer情况下
composer下:
php ./verdor/hunzsig/h-php/hPackage.php -c ./config.php
测试接口地址
http://host/external/test 如果不想public接口暴露在scope列表中,函数包含“__”即可 如:edit__ 参考 User\Model\InfoModel
Map展示地址
http://host/external/map
测试接口地址
你可以在index使用external方法,绑定自定义的php执行路径
http://host/external/sql
搜索例子1
select * from "default".system_data where (data#>>'{project_name,name}')::text like '%系统%';
搜索例子2
select * from "default".system_data where ("data"->'server_pre_alert_limit'->'value')::text::int > 5;
前端json搜索语法
{project_name,name} % #TT || (({project_name,name} % #系统 || {project_name,name} != #xxx) && {server_pre_alert_limit,value} > #1 && ({server_pre_alert_limit,value} > #0 || {server_pre_alert_limit,value} < #100000000))
[ n ] isNull
{?,?,?} n #
[ !n ] isNotNull
{?,?,?} !n #
[ % ] like
{?,?,?} % #???
[ !% ] notLike
{?,?,?} !% #???
[ = ] equalTo
{?,?,?} = #???
[ > ] greaterThan
{?,?,?} > #???
[ < ] lessThan
{?,?,?} < #???
[ >= ] greaterThanOrEqualTo
{?,?,?} >= #???
[ <= ] lessThanOrEqualTo
{?,?,?} <= #???
[ <> , != ] notEqualTo
{?,?,?} <> #???
{?,?,?} != #???
[ >< ] between
{?,?,?} >< #???,???
[ !>< ] notBetween
{?,?,?} !>< #???,???
[ * ] any
{?,?,?} * #???,???,???...
[ ^ ] in
{?,?,?} ^ #???,???,???...
[ !^ ] notIn
{?,?,?} !^ #???,???,???...
后端sql模型讲解
连贯写法 schemas table 必须在前,否则field等自动失效处理
select one update insert insertAll delete count 等作为终结语,后续连贯断开
$this->db()->schemas('default')->table('system_data') ->field('key,value') ->in('key', $key) ->multi();
字段闭包(默认)
等于 ( "a" = 1 or "b" = 1 ) and( "c" = 1 or "d" = 1 or "e" = 1 )
$this->db()->table('test')->equalTo('a',1) ->equalTo('b',1) ->closure('or') ->equalTo('c',1) ->equalTo('d',1) ->equalTo('e',1) ->closure('or');
全局闭包
等于 (( "a" = 1 or "b" = 1 ) or "c" = 1 or "d" = 1 or "e" = 1 )
$this->db()->table('test') ->equalTo('a',1) ->equalTo('b',1) ->closure('or') ->equalTo('c',1) ->equalTo('d',1) ->equalTo('e',1) ->closure('or',true);
直接插入bean写法(insert update delete需要try)
try { $this->db()->schemas('default')->table('system_data')->insert($bean->toArray()); } catch (\Exception $e) { return $this->error($e->getMessage()); }
插入可以手动获取lastID(在无序列表中自动获取可能会产生严重的错误)
try { $this->db()->schemas('default')->table('system_data')->insert($bean->toArray()); $lastId = $this->db()->lastInsertId(); } catch (\Exception $e) { return $this->error($e->getMessage()); }