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 {

}

Bar.php

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

特に PHPStorm のような ide を使用している場合、 notepad を使用している場合、これがどのようにエラーにつながるのか、私は本当に知りません。

于 2015-11-21T01:30:41.270 に答える