在 b4 中很抱歉创建了这样一个奇怪的话题,但我会尽量简洁。我正在尝试改进我制作的 php 包的面向对象设计。我有一个代表 en Http 外部 API的Api类。该类具有get、post、delete等方法,并封装了一些响应检索或 json 解码。此类接收 GuzzleHttp 客户端,因为它是执行此操作的构造函数参数。然后,我创建了一些类对于很多终端类别的API有一个像销售,用户,等...一个例子方法,你可以像一个类找到销售将是recent()它的代码会做这样的事情: $this->api->get('recent-sales-endpoint.json')。这将需要注入API到销售的依赖,这样我可以写它的单元测试,所以我总是这样。现在,如果我尝试充当安装了我的库并希望获得最近销售量的用户,我必须执行以下操作:$api = new Api($client);$sale = new Sale($api);$recentSales = $sale->recent();$car = new Car($api);$newCars = $car->getNew();所以我想知道这是否是一种改进或反模式,使我的包更易于使用。在我的API类构造函数中,我为每个类别类创建实例。private $client;private $car;private $sale;public function __construct(Client $client){ $this->client = $client; $this->car = new Car($this); $this->sale = new Sale($this);}然后我可以创建访问方法,例如:public function sale(){ return $this->sale}因此,对于包用户来说,现在检索数据将是:$api = new Api($client);$recentSales = $api->sale()->recent();$newCars = $api->car()->getNew();您认为这两种方式中哪种方式最正确?此外,我认为我可以在第一次查询时初始化这些实例,而不是在构造函数中进行初始化,但我不知道我是否使设计过于复杂。
1 回答
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消