1

结合 PSR-4 自动加载考虑以下文件结构:

.
├── Foo
│   └── Bar.php
└── Foo.php

Bar.php是扩展Foo.php。假设它们已经存在于一个深度嵌套的命名空间中,Bar.php的标题将如下所示:

<?php
namespace My\Cool\Project\Module\Foo;
class Bar extends \My\Cool\Project\Module\Foo
{

这工作得很好。令我困惑的是,是否有一种优雅的方法可以避免重复字符串 My\Cool\Project\Module\Foo。这里的潜在问题是,必须手动重复它会导致拼写错误和错误,通常可以/可以通过有效地使用语言功能来防止这些错误。所以我想知道是否有办法以如下方式重写上面的代码:

<?php
namespace My\Cool\Project\Module\Foo;
class Bar extends __NAMESPACE__
{

或者

<?php
namespace My\Cool\Project\Module\Foo;
class Bar extends ..\Foo
{

或类似的东西。

4

1 回答 1

-2

这就是为什么你实际上有命名空间;)命名空间并不意味着你必须指定文件的“路径”

Foo.php

<?php
namespace \My\Cool\Project;

class Foo {

}

酒吧.php

<?php
namespace \My\Cool\Project;
class Bar extends Foo 
{
}

我真的不知道这怎么会导致错误,特别是当你使用像 PHPStorm 这样的 ide 时,当你使用记事本时,是的,它会导致错误,但它不是你应该因此而强奸 PHP 的情况。

于 2015-11-21T01:30:41.270 回答