一尘不染

PHP的特质–任何实际示例/最佳实践?

php

特性已成为PHP5.4的最大新增功能之一。我了解语法并了解特性背后的思想,例如将水平代码重用于日志,安全性,缓存等常见内容。

但是,我仍然不知道如何在项目中利用特质。

是否有任何已经使用了特征的开源项目?关于如何使用特征构造体系结构的任何好的文章/阅读材料?


阅读 178

收藏
2020-05-29

共1个答案

一尘不染

我个人的观点是,在编写简洁的代码时实际上很少使用特质。

与其使用特征将代码入侵到类中,不如通过构造函数或setter传递依赖项:

class ClassName {
    protected $logger;

    public function __construct(LoggerInterface $logger) {
        $this->logger = $logger;
    }
    // or
    public function setLogger(LoggerInterface $logger) {
        $this->logger = $logger;
    }
}

我发现比使用特征更好的主要原因是,通过消除与特征的硬耦合,您的代码更加灵活。例如,您现在可以简单地传递另一个记录器类。这使您的代码可重用和可测试。

2020-05-29