私はジェネリッククラスを拡張する一連のサービスを持っています。これらのサービスは共通の機能を提供します。コードを再利用するために継承または合成の代わりに形質を使用するのはどれほど難しいでしょうか?
これらのサービスの特定のグループは、API内の特定のリソースを使用しているため、共通のコードを持っています(APIに接続し、GETまたはPOSTを実行します。 API要件、エンドポイントと通過するパラメータの数を基本的に変更すること)。
私の質問は、このコードを特性上抽象化するのは悪いですか?特定のコードを使用する必要のあるサービスであれば、それを再利用しますか?ここで
は、いくつかの例です:
それを含めtrait ApiResource {
public function retrieve()
{
try {
// apply logic of the resource
} catch (\Exception $e) {
return false;
}
}
}
class Departments extends Generic {
use ApiResource;
public function createCache(Cache $cache)
{
$cache->storeDepartments($this->retrieve('departments', 200));
}
}
class Brands Generic {
use ApiResource;
public function createCache(Cache $cache)
{
$cache->storeBrands($this->retrieve('brands'));
}
}
これはありません。特性は、言語支援の複写機能です。あなたがしたいようにそれを使用することで何も問題はありません。 –
これはかなり意見に基づいた質問ですので、私はそれがSOが許すところの端にあると信じています。それは、例外が存在するにもかかわらず、私はほとんど特性を見つけることができないと言われています。オブジェクトの構成がここではより良い選択肢になると私は思っています。あなたのApiResourcesのプロパティ内にあり、APIとの実際の通信に使用できるApiConnectorのいくつかの並べ替え。 – Pevara