Biny是一款web程序开发的框架,您可以使用这个框架设计网站,可以设计网页端应用,让用户在开发新软件的时候获得更多帮助,软件已经提供基本的配置内容,包括路由配置、静态化配置、自动加载配置、请求配置、响应配置、志相关配置、数据库相关配置、缓存相关配置、异常配置,用户可以加载提供的类配置设计自己的程序,系统自动加载类的配置,会根据用户代码自动生成相关的功能模块,节约用户手动配置网页请求,配置数据库的时间,每个数据库表都可以建立单独的类使用,可以完全避免SQL注入的风险!
Biny软件功能
支持跨库连表,条件复合筛选,查询PK缓存等
同步异步请求分离,类的自动化加载管理
支持Form表单验证,支持事件触发机制
支持浏览器端调试,快速定位程序问题和能瓶颈
具有sql防注入,html自动防xss等特
Biny软件特色
Biny是一款高能的轻量级PHP框架
遵循 MVC 模式,用于快速开发现代 Web 应用程序
Biny代码简洁优雅,对应用层,数据层,模板渲染层的封装简单易懂,能够快速上手使用
高能,框架响应时间在1ms以内,单机qps轻松上3000
Biny教程
表单验证
框架提供了一套完整的表单验证解决方案,适用于绝大多数场景。
表单验证支持所有类型的验证以及自定义方法
简单示例:
定义完验证类,就可以在Action中使用了,可以通过getForm方法加载表单
注意:在$_rules中未定义的字段,无法在$form中被获取到,就算不需要验证,也最好定义一下
在很多情况下,表单参数并不是都完全相同的,系统支持Form复用,即可以在通用的Form类中自定义一些内容
比如,还是上述例子的testForm,有个类似的表单,但是多了一个字段type,而且对于status的验证方式也需要变化
可以在testForm中添加一个方法
在Action中加载表单也需要添加'addType'作为参数,其他使用方法一致
一个表单验证类里可以写多个附加方法,相互直接并不会有任何影响
验证类型
系统提供了7种默认验证方式,验证失败时都会记录错误,用户可以通过getErr方法获取
self::typeInt 数字类型,包括整型浮点型,负数
self::typeBool 判断是否为true/false
self::typeArray 判断是否为数组类型
self::typeObject 判断是否为对象数据
self::typeDate 判断是否为一个合法的期
self::typeDatetime 判断是否为一个合法的期时间
self::typeNonEmpty 判断是否非空(包括null, 空字符串)
self::typeRequired 有该参数即可,可以为空字符串
调试
框架中有两种调试方式,一种是在页面控制台中输出的调试,方便用户对应网页调试。
另一种则是和其他框架一样,在志中调试
控制台调试
Biny的一大特色既是这控制台调试方式,用户可以调试自己想要的数据,同时也不会对当前的页面结构产生影响。
调试的开关在/web/index.php里
控制台调试的方式,同步异步都可以调试,但异步的调试是需要引用/static/js/main.js文件,这样异步ajax的请求也会把调试输出在控制台里了。
调试方式很简单,全局可以调用Logger::info($message, $key),另外还有warn,err,log等
第一个参数为想要调试的内容,同时也支持数组,Object类的输出。第二个参数为调试key,不传默认为phpLogs
Logger::info()消息 输出
Logger::warn()警告 输出
Logger::err()异常 输出
Logger::log()志 输出
下面是一个简单例子,和控制台的输出结果。结果会因为浏览器不一样而样式不同,效果上是一样的。
另外Logger调试类中还支持time,memory的输出,可以使用其对代码能做优化。
志调试
平台的志目录在/logs/,请确保该目录有写权限
异常记录会生成在err_{期}.log文件中,如:err_2016-05-05.log
调试记录会生成在log_{期}.log文件中,如:log_2016-05-05.log
程序中可以通过调用Logger::addLog($log, INFO)方法添加志,Logger::addErr($log, ERROR)方法添加异常
$log参数支持传数组,会自动排列打印
$LEVEL可使用常量(INFO、DEBUG、NOTICE、WARNING、ERROR)不填即默认级别
系统程序错误也都会在err志中显示,如页面出现500时可在错误志中查看定位
==============v2.10更新分割线==============
Biny v2.10之后加入志自动归档功能,可在/config/config.php中开启
开启之后,志目录中log文件会在期变更时触发归档作,并将历史文件写入{年}-{月}目录中。外层log文件则一直会是最新的
脚本执行
Biny框架除了提供HTTP的请求处理以外,同时还提供了一套完整的脚本执行逻辑
执行入口为根目录下的shell.php文件,用户可以通过命令行执行php shell.php {uter} {param}方式调用
其中uter为脚本路由,param为执行参数,可缺省或多个参数
脚本路由
路由跟http请求模式基本保持一致,分为{module}/{method}的形式,其中{method}可以缺省,默认为index
例如:index/test就会执行indexShell中的action_test方法,而demo则会执行demoShell中的action_index方法
如果uter缺省的话,默认会读取/config/config.php中的uter内容作为默认路由
脚本参数
脚本执行可传复数的参数,同http请求可在方法中直接捕获,顺序跟参数顺序保持一致,可缺省
另外,可以用param方法获取对应位置的参数
例如:终端执行php shell.php test/demo 1 2 aaa,结果如下:
同时框架还提供了变量化的参数传递方式,用法与http模式保持一致
例如:终端执行php shell.php test/demo --name="test" --id=23 demo,结果如下:
注意:使用变量化传递后,方法中默认参数将不会捕获非变量化的参数,如上例的demo需要通过param方法获取
脚本志
脚本执行不再具有HTTP模式的其他功能,例如表单验证,页面渲染,浏览器控制台调试。 所以在Logger调试类中,info/err/debug/warning这几个方法将改为在终端输出
同时也可以继续调用Logger::addLog和Logger::addErr方法来进行写志的作
志目录则保存在/logs/shell/目录下,请确保该目录有写权限。格式与http模式保持一致。
注意:当程序返回$this->response->err($msg)的时候,系统会默认调用Logger::addErr($msg),请勿重复调用。
近期热门