大家都是怎么设计项目中的传参的?
以前项目中传参基本上如果只有一个参数则直接传,如果多个的话就合并成数组
public function user(int $id)
public function users(array $params)
数组的问题是可读性太差了,接收的方法内部可能还需要做一些判断,后面进行优化,使用了 laravel-data 扩展,将验证参数转换成 Data 对象
<?php
namespace App\Data\User;
use Spatie\LaravelData\Data;
class UserUpdateData extends Data
{
public function __construct(
public ?string $nickname,
public ?string $birthday,
public ?int $city_id,
public ?int $height,
public ?int $weight,
public ?int $profession_id,
public ?int $gender
) {
}
}
public function update(int $userId, UserUpdateData $data)
传对象肯定是比传 array 的可维护性更好,但是这里有几个纠结的点
根据接口参数定义 Data 类,同一个 controller 定义一个 Data 还是每个接口都定义一个 Data 呢?
controller 将 Data 传递到 service 层,Service 层经过处理再传递到 Model 层,传递的参数可能会发生变化,比如增加其他的字段,service 到 model 层重新创建 Data? 这样感觉创建的文件有点多,还会有一定的冗余。
实际项目的传参怎么设计欢迎各位大佬指教交流~
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: