扩展名称与命名空间匹配的类

时间:2015-11-21 00:44:00

标签: php namespaces psr-4

将以下文件结构与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
{

或类似的东西。

1 个答案:

答案 0 :(得分:-2)

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

Foo.php

<?php
namespace \My\Cool\Project;

class Foo {

}

Bar.php

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

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