PHP NkNkn framework


Keywords
framework, php, NkNkn
License
MIT

Documentation

nknkn 妮可妮可妮~

将以下包组合成小框架,轻量+自定义组合各个模块,定制属于你的小框架

"baagee/php-onion" // 洋葱模型,提供中间件支持
"baagee/php-params-validator" // 参数验证类
"baagee/php-mysql" // 操作mysql类
"baagee/php-router" // 路由类
"baagee/php-config" // config配置获取类
"baagee/php-log" // Log日志类
"baagee/wtf-error" // 友好的开发错误展示类
"baagee/php-template" // html模板引擎
"baagee/php-session" // Session管理类
"baagee/php-cookie" //Cookie管理类
"baagee/php-event" //事件定义触发类
"baagee/php-curl-request" //Curl请求类

框架目录结构

$ tree src
src
├── App.php // App类
├── AppEnv.php // App目录环境等信息配置与获取
├── Base
│   ├── ActionAbstract.php // 当控制器比较大时,可以把每个action独立成一个类的父类
│   ├── ControllerAbstract.php // 控制器父类
│   ├── EventAbstract.php // 事件父类
│   ├── HttpServiceAbstract.php // 封装的调用第三方Http服务时的Curl类
│   ├── MiddlewareAbstract.php // 中间件父类
│   ├── ModelAbstract.php // Model父类
│   ├── ParamsValidatorTrait.php // 参数批量验证
│   └── TimerTrait.php // 在计时器中运行,会返回运行时间
├── Constant
│   ├── CoreEventList.php // 系统事件名
│   └── CoreNoticeCode.php // 系统错误码
├── IdGenerator.php // 基于Redis的Id生成器
├── LogFormatter.php //默认的 Log格式化 json字符串
├── Middleware
│   ├── CookieInit.php // cookie初始化中间件
│   └── SessionInit.php // Session初始化中间件
├── Redis.php // 包装的Redis客户端
├── Router.php // 路由类
├── UploadFile.php // 上传文件类
└── UserNotice.php // 需要提示用户的Exception类

app目录结构

必须的目录在vendor同级别有

app// 项目具体代码 里面有控制器,中间件,模型等类
public // webroot目录 index.php所在目录
config // 配置文件所在目录
runtime // 运行时缓存等目录,要保证可写
vendor // composer安装文件夹
comspoer.json

至于目录下的子目录,自己自定义就行

详细参考结构请看示例 【sql-profiling】mysql sql语句性能分析平台

框架运行流程

app初始化
触发app初始化之后的事件
触发路由初始化之前事件
路由初始化
触发路由初始化之后事件
触发路由匹配之前事件
if 路由匹配成功
    触发路由匹配之后事件
        Cookie中间件开始
            Session中间件开始
                自定义中间件开始
                    Action执行业务逻辑
                自定义中间件结束
            Session中间件结束
        Cookie中间件结束
else
    http_response_code(404)
请求结束输出响应

支持自定义Log存储方式,默认文件

只需要继承并实现BaAGee\Log\Base\LogHandlerAbstract,并在log.php配置文件指定handler类名即可

支持自定义Log格式

只需要继承并重写BaAGee\Log\Base\LogFormattergetLogString方法即可,并在log.php配置文件指定formatter类名即可

支持中间件

框架默认中间件有Session,Cookie,并能根据有无对应配置文件判断是否开启,用户可自定义中间件,比如验证登陆,权限之类的

支持事件触发,框架内置的事件有

// app初始化后
BaAGee\NkNkn\Constant\CoreEventList::APP_AFTER_INIT_EVENT
// 路由初始化前
BaAGee\NkNkn\Constant\CoreEventList::ROUTER_BEFORE_INIT_EVENT
// 路由初始化后
BaAGee\NkNkn\Constant\CoreEventList::ROUTER_AFTER_INIT_EVENT
// 路由匹配执行前
BaAGee\NkNkn\Constant\CoreEventList::ROUTER_BEFORE_DISPATCH_EVENT
// 路由匹配执行后
BaAGee\NkNkn\Constant\CoreEventList::ROUTER_AFTER_DISPATCH_EVENT 

session支持file,memcache,redis储存

通过修改session.php配置文件的handler类名来修改储存方式,为空表示file

其他强大的功能?自己实现或者借助composer吧

使用示例代码

【sql-profiling】mysql sql语句性能分析平台