【发布时间】:2020-10-14 22:54:33
【问题描述】:
在我的许多PHP微库中,都有与项目名匹配的Class,它创建了一个奇怪的全限定类名,看看这个
<?php
namespace Javanile\MysqlImport;
class MysqlImport {
...
}
然后当我使用这个类时,我有烦人的双重名称重复
<?php
$importer = new \Javanile\MysqlImport\MysqlImport(...);
// OR (EVEN BAD)
use Javanile\MysqlImport\MysqlImport;
$importer = new MysqlImport(...);
根据 PSR-4,我们有:
-
Javanile: 是供应商名称 -
MysqlImport: 是它修复项目名的子包名 -
MysqlImport: 是库的主体类
请支持我处理项目和主体类名在完全限定类名上的烦人的双重重复。太糟糕了,正确的做法是什么? (我不想想出随机的类名来避免它)
【问题讨论】:
-
use语句到底有什么问题?无论如何,大多数编辑都会为您添加它们。如果你不喜欢它的名字,你也可以给这个类起别名。 -
没有语法错误,对我来说很吵,使用别名不会消除我的混乱,问题是 MysqlImport 有两次完整的类名,一个是项目名称,一个是它自己的类跨度>
-
我不确定你在问什么。如果那是您的库,您可以根据需要更改类名本身或其名称空间/位置。如果那不是你的库,你真的别无选择:使用它的完全限定名称(通常不推荐)、正常导入它或给它取别名。无论如何,没有人会阅读
use语句,这并不意味着您的代码会变得难以阅读或因此而变得难以阅读。 -
我讨厌在 PHP 库中有一个与项目同名的类
标签: php namespaces naming-conventions psr-4 verbosity