Longphp 开发框架
木兰宽松许可证, 第2版
推荐配置 | 最低配置 | |
---|---|---|
PHP | 8.1 | 8.0 |
php -f cli.php [参数]
## 如果不知道参数,直接执行如下语句,会显示参数
php -f cli.php
## 显示结果如下:
请正确输入参数(举例:php -f cli.php aaa):
aaa bbb
ccc ddd
fff eee
...
根据 uri 查找控制器 遵循驼峰命名
比如:http://127.0.0.1:8081/aaa/bbb/index
会查找 controller/web/aaa/bbb/index.php
比如:http://127.0.0.1:8081/aaa/bbb/index_asd
会查找 controller/web/aaa/bbb/indexAsd.php
- 在文件
config/init.php
里添加参数白名单
例如:// 允许的参数白名单 $configs['allow_argvs'] = [ 'aaa' => 'bbb', 'ccc' => 'ddd', 'fff' => 'eee' ]; // web 默认控制器 $configs['web'] = [ 'default_controller' => env('default.web_default_controller') ]; ...
controller
目录里增加参数同名控制器文件- 文件路径
- CLI:
controller/cli
- WEB:
contrller/web
- CLI:
- 控制器调
service、model
支持依赖注入
,例如:<?php namespace controller\cli; use controller\baseController; use model\attackSoftModel; use service\softwareService; class getSoftware extends baseController { private attackSoftModel $attackSoftModel; private softwareService $softwareService; public function __construct(attackSoftModel $attackSoftModel, softwareService $softwareService) { $this->attackSoftModel = $attackSoftModel; $this->softwareService = $softwareService; parent::__construct(); } public function run() { $softWares = $this->softwareService->getSoftware(); $softData = $this->attackSoftModel->getData(); } }
- 文件路径
model
目录说明- 需要继承
baseModel
类 - 文件命名
- 原则上与数据表同名,会自动匹配数据表
- 例如,表名:
attck_group
,model
就是attckGroup.php
- 例如,表名:
- 同时支持自定义表名
model
文件里设置受保护变量protected $tableName
- 原则上与数据表同名,会自动匹配数据表
- 内置方法
queryRaw
传参 SQL,执行给定的 SQLfeatchAll
获取上述方法执行的结果集self::getTableName()
获取当前model
的表名
- 举例
<?php namespace model; class attackSoftModel extends baseModel { /** * 获取表数据 * * @return mixed */ public function getData(): mixed { return self::queryRaw('select * from `' . self::getTableName() . '`')->fetchAll(); } }
- 需要继承
Log
操作- 举例
生成的日志内容
use class\log\Log; Log::info('asdasd', ['aaa'=>'bbb', 'ccc' => 'ddd', 'eee']);
[2022-04-27 19:39:59] INFO "asdasd" {"aaa":"bbb","ccc":"ddd","0":"eee"}
- 支持
info,error,warn
三个方法- 第一个参数:字符串
- 第二个参数:数组,日志里会转成
JSON
- 日志生成路径可以在
.env
里进行配置,记得在.gitignore
配置忽略日志
- 举例
控制器
的命名空间要根据路径正确填写控制器
文件名和类名,必须驼峰命名