在 Yii2 中,命名空间命名约定和它们所在的文件夹之间有什么关系吗?

In Yii2 is there any relationship between Namespaces naming conventions and folders they reside in?

例如,有一个命名空间,如 yii\consoleyii\console\controllers。在 yii\console 中,所有 .php 文件都由 namespace yii\console; 定义,与 yii\console\controllers 中的 .php 文件相同,由 namespace yii\console\controllers; [=16] 定义=]

这是否意味着 php 个命名空间函数和 类 可以作为同一个命名空间位于多个文件中?命名空间是由它们在应用程序中的位置定义的,还是这只是 Yii 约定?

Does this mean php namespace functions and classes can be located in multiple files as the same namespace?

如果函数是方法,则它们不直接与命名空间相关,而是与属于该命名空间的 class 相关。

Are the namespaces defined by their location on the application or is this just a Yii convention?

这并不是真正的 YII 约定,其他框架(symfony、zend、laravel、cakephp 等)也(或多或少)以这种方式工作。 path <=> namespace 关系通常由 autoloader.

定义

请参阅 PSR-4 中的命名空间示例。

您应该阅读 php docs. php-fig 可能会帮助您理解通常为什么以及如何使用命名空间。