最近、私は、インタフェースの実装をカバーするためにTraitを使用することを意味する複数の記事に出くわしました。 例:特性を使用してインタフェースの実装要件をカバーする
interface ArticleInterface
{
/**
* @return mixed
*/
public function getTitle();
}
trait ArticleTrait
{
/**
* @return string
*/
public function getTitle()
{
return "article_title";
}
}
abstract class AbstractArticle implements ArticleInterface
{
use ArticleTrait;
}
Someも、インタフェースを実装する形質はPHPのコアで利用可能であるべきだと思います。
したがって、私はこのデザインパターンを守らなければならないのかという質問に対して適切な回答を得ようとしていますか? 「はい」の場合、PHPDocの記述はインターフェースと特性の両方に記述する必要があります(重複していることを意味します)。 このデザインを使用する際に注意すべきその他の詳細はありますか?
Imo、このケースでは特性が適しています。「実際の」継承なしでいくつかのデフォルト実装を提供します。ボイラープレートコードを減らす簡単な方法。これはJavaの[インタフェースのデフォルトメソッド](https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html)のように見えます。このデザインの欠点はありません。 – Timurib