有没有办法分解 PHP 中的命名空间?
Is there a way to break down a namespace in PHP?
我发现自己在互联网上寻找已经回答过的人,但我找不到。
我正在使用严格的 PSR12 标准清理一些代码,我发现这个问题与命名空间的长度超过配置的 80 个字符(这是我们的软限制,它创建了一个警告)。
到目前为止,我已经找到了一种编写可读代码的正确方法,同时保持在 80 行以内,无论名称有多长。但是对于命名空间我没有。我们的许多名称空间声明如下所示:
namespace CompanyName\ProjectName\Domain\SubClasification\Clasification\ModuleName;
它们可能会变得很长,特别是因为我同事中的许多人都喜欢很长的 class 名称,所以我想知道是否有办法让名称空间声明适合多行?
您可以在分隔符上拆分命名空间,因此这是有效的语法:
namespace CompanyName
\ProjectName
\Domain
\SubClasification
\Clasification
\ModuleName;
或者,您可以告诉 PHPCS 忽略下一行:
// phpcs:ignore
namespace CompanyName\ProjectName\Domain\SubClasification\Clasification\ModuleName;
您也许还可以创建一个自定义 PHPCS 嗅探,扩展现有行长度嗅探但不包括命名空间行。
[编辑] 请注意,multi-line 命名空间的功能可能会在 PHP 8 中消失:https://3v4l.org/IWbe1
我发现自己在互联网上寻找已经回答过的人,但我找不到。
我正在使用严格的 PSR12 标准清理一些代码,我发现这个问题与命名空间的长度超过配置的 80 个字符(这是我们的软限制,它创建了一个警告)。
到目前为止,我已经找到了一种编写可读代码的正确方法,同时保持在 80 行以内,无论名称有多长。但是对于命名空间我没有。我们的许多名称空间声明如下所示:
namespace CompanyName\ProjectName\Domain\SubClasification\Clasification\ModuleName;
它们可能会变得很长,特别是因为我同事中的许多人都喜欢很长的 class 名称,所以我想知道是否有办法让名称空间声明适合多行?
您可以在分隔符上拆分命名空间,因此这是有效的语法:
namespace CompanyName
\ProjectName
\Domain
\SubClasification
\Clasification
\ModuleName;
或者,您可以告诉 PHPCS 忽略下一行:
// phpcs:ignore
namespace CompanyName\ProjectName\Domain\SubClasification\Clasification\ModuleName;
您也许还可以创建一个自定义 PHPCS 嗅探,扩展现有行长度嗅探但不包括命名空间行。
[编辑] 请注意,multi-line 命名空间的功能可能会在 PHP 8 中消失:https://3v4l.org/IWbe1