为什么特征有时在 PHP 包中分组为 "concerns"?

Why are traits sometimes grouped as "concerns" in PHP packages?

在查看包源文件时,我经常看到一个名为“concerns”的文件夹似乎专门存放特征文件。几个例子:

而其他软件包只有一个名为“traits”的文件夹用于存放 traits。例如:

这只是个人喜好,还是将文件夹命名为“Concerns”有什么意义?

我认为这只是社区选择的“足够好”的名称。事实上,特征不是“对象”或“工厂”或“存储库”——它们自己不做任何事情,但它们正在向 类 使用它们的地方添加属性和质量。而“concern”这个词不仅仅意味着“something that worry me”,还有“being about something”的意思,大体符合traits的目的。

我个人认为“关注”这个词并不比“特质”更好或更能提供信息。特别是对于那些熟悉概念和 PHP 术语并且该文件夹确实只包含特征的人。但有时最好选择一个更通用的名称以避免受到 language-specific 命名的约束。

只是为了澄清这一点 - 您可以在项目“数据库”中调用 folder/namespace,但如果稍后您决定只将数据存储在内存缓存中,那么使用“内存缓存数据库”会显得出乎意料和奇怪”。但是,如果您选择了一个通用名称“存储”——那么任何数据库、内存缓存甚至远程服务的接口都适合放入其中。

UPD: 我太好奇了,做了更多的研究。原来这个上下文中的“关注”这个词来自 Ruby-on-rails 世界,它基本上与 PHP 中的特征相同(另一个很常见的词是“mixin”):

https://medium.com/@carlescliment/about-rails-concerns-a6b2f1776d7d

How to use concerns in Rails 4