在您的主文件的开头(可能是/var/www/dist/index.php),您只需包含 Composer 或您使用的任何自动加载器。
<?php
if ( file_exists( __DIR__.'/path/to/vendor/autoload.php' ) )
require __DIR__.'/path/to/vendor/autoload.php';
然后您可以使用use 语句为您在文件中使用的类添加快捷方式
use MyNamespace\Controller\Index,
MyNamespace\Service\FooService;
use Zend\Foo\Bar;
use Symfony\Baz\Biz;
use Etc\Etc\Etc;
// Refers to \Zend\Foo\Bar
$bar = new Bar;
或者在实例化类时只使用完整路径
$bar = new \Zend\Foo\Bar;
要添加您自己的命名空间,只需将其添加到您的composer.json 文件中
"autoload" : {
"psr-4" : {
"MyNamespace\\" : "src/"
}
}
然后打开你的命令行界面/终端/控制台并将命名空间添加到自动加载器
# local install of Composer in your project
php composer.php dump-autoload
# or global install and `composer` is in your $PATH
composer dump-autoload
有一个规则:
每个文件一个类
如果您的项目确实是(PSR-0 已弃用 或)PSR-4 compatible,那么您在一个文件中不要使用多个 namespace。类名(在 PSR-4 FIG 标准中)定义为
完全限定的类名具有以下形式:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
“命名空间前缀”之后的连续子命名空间名称[注意:\ 是“根”)对应于“基本目录”中的一个子目录,其中命名空间分隔符代表目录分隔符。
下面的例子:
+------------------------------+------------------+------------------------+---------------------------------------+
| Fully Qualified Class Name | Namespace Prefix | Base Directory | Resulting File Path |
+------------------------------+------------------+------------------------+---------------------------------------+
| \Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
+------------------------------+------------------+------------------------+---------------------------------------+