自定义开发
本指南介绍如何对逍遥图库进行自定义开发和扩展。
目录结构
photo-gallery/
├── app/ # 应用目录
│ ├── controller/ # 控制器
│ ├── model/ # 模型
│ ├── service/ # 服务层
│ ├── validate/ # 验证器
│ └── middleware/ # 中间件
├── config/ # 配置文件
├── route/ # 路由定义
└── view/ # 视图模板
添加新功能
1. 创建控制器
// app/controller/CustomController.php
namespace app\controller;
class CustomController extends BaseController
{
public function index()
{
return json(['message' => 'Hello']);
}
}
2. 添加路由
// route/app.php
Route::get('/custom', 'CustomController/index');
3. 创建服务层
// app/service/CustomService.php
namespace app\service;
class CustomService
{
public function process($data)
{
// 业务逻辑
}
}
扩展存储驱动
添加新的云存储
// app/service/storage/QiniuStorage.php
namespace app\service\storage;
class QiniuStorage implements StorageInterface
{
public function upload($file, $path)
{
// 七牛云上传逻辑
}
public function delete($path)
{
// 删除逻辑
}
}
自定义中间件
// app/middleware/Custom.php
namespace app\middleware;
class Custom
{
public function handle($request, \Closure $next)
{
// 前置处理
$response = $next($request);
// 后置处理
return $response;
}
}
事件监听
定义事件
// app/event/PhotoUploaded.php
namespace app\event;
class PhotoUploaded
{
public $photo;
public function __construct($photo)
{
$this->photo = $photo;
}
}
监听事件
// app/listener/SendNotification.php
namespace app\listener;
class SendNotification
{
public function handle($event)
{
// 发送通知
}
}
代码规范
- 遵循 PSR-12 编码规范
- 使用有意义的变量和方法名
- 添加必要的注释
- 编写单元测试
调试技巧
开启调试模式
APP_DEBUG = true
使用 dump
dump($variable);
halt($variable); // 输出并停止
查看 SQL
Db::listen(function($sql, $runtime, $master) {
echo $sql . ' [' . $runtime . 's]';
});
提交代码
- Fork 仓库
- 创建特性分支
- 编写代码和测试
- 提交 Pull Request
