huynh / autoload-test
该包最新版本(dev-master)没有提供许可证信息。
psr-0 和 psr-4 之间的自动加载测试
dev-master
2016-05-30 11:42 UTC
Requires
- php: >=5.3.0
- guzzlehttp/guzzle: 4.*
This package is not auto-updated.
Last update: 2024-09-14 20:03:57 UTC
README
- Composer自动加载提供了多种不同的自动加载功能,尽管建议使用PSR 4自动加载,这是默认实现。
- 使用命名空间自动加载类意味着它必须遵循一种约定,通常这种约定涉及使用文件夹
命名空间/文件夹约定。
- 类应该根据它们的命名空间存储在文件夹中。
- 通常,你将在根目录中创建一个src/目录,与vendor/处于同一级别,并将你的项目添加到那里。以下是文件夹结构的示例。
.
+-- src
|
+-- Book
| +-- History
| | +-- UnitedStates.php - namespace Book\History;
+-- Vehicle
| +-- Air
| | +-- Wings
| | | +-- Airplane.php - namespace Vehicle\Air\Wings;
| +-- Road
| | +-- Car.php - namespace Vehicle\Road;
+-- tests
+-- test.php
+-- vendor
psr-0 和 psr-4 自动加载之间的区别
- 见http://stackoverflow.com/questions/24868586/what-is-the-difference-between-psr-0-and-psr-4
- 见https://groups.google.com/d/msg/silverstripe-dev/i1voM50oFMk/rPouYXtnSA0J
psr-0
已弃用。查看vendor/composer/autoload_namespaces.php
文件,你可以看到命名空间以及它们映射到的目录。
composer.json
"autoload": {
"psr-0": {
"Book\\": "src/",
"Vehicle\\": "src/"
}
}
- 在 src/Book/History/UnitedStates.php 中寻找 Book\History\UnitedStates
- 在 src/Vehicle/Air/Wings/Airplane.php 中寻找 Vehicle\Air\Wings\Airplane
psr-4
查看 vendor/composer/autoload_psr4.php
文件,你可以看到命名空间以及它们映射到的目录。
composer.json
"autoload": {
"psr-4": {
"Book\\": "src/",
"Vehicle\\": "src/"
}
}
- 在 src/History/UnitedStates.php 中寻找 Book\History\UnitedStates
- 在 src/Air/Wings/Airplane.php 中寻找 Vehicle\Air\Wings\Airplane
composer.json
"autoload": {
"psr-4": {
"Book\\": "src/Book/",
"Vehicle\\": "src/Vehicle/"
}
}
- 在 src/Book/History/UnitedStates.php 中寻找 Book\History\UnitedStates
- 在 src/Vehicle/Air/Wings/Airplane.php 中寻找 Vehicle\Air\Wings\Airplane
准备生产
提醒一下,在将代码部署到生产环境之前,不要忘记优化自动加载器
$ composer dump-autoload --optimize
这也可以在安装带有 --optimize-autoloader 选项的包时使用。没有这种优化,你可能会注意到性能从 20 到 25% 的下降。
用法
见 tests/test.php
composer install
php tests/test.php