필자는 generic 클래스를 확장하는 서비스 집합을 가지고 있는데, 이들간에 공통된 기능을 제공합니다.코드를 재사용하기 위해 상속 또는 합성 대신 특성을 사용하는 것이 얼마나 좋지 않습니까?
이러한 서비스의 특정 그룹은 공통점이 한 가지 있습니다. 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'));
}
}
아니요. 특성은 언어 보조 copypaste입니다. 원하는대로 사용하는 데는 문제가 없습니다. –
이것은 상당히 의견을 바탕으로 한 질문이므로 SO가 허용하는 것의 가장자리에 있다고 생각합니다. 즉, 나는 예외가 존재하기는하지만 형질이 좋은 아이디어는 거의 찾지 못한다고합니다. Object Composition이 더 나은 선택이 될 것입니다. ApiConnector의 일종으로 ApiResources의 속성 내부에있을 수 있으며 API와의 실제 통신에 사용됩니다. – Pevara