huynh / autoload-test

该包最新版本(dev-master)没有提供许可证信息。

psr-0 和 psr-4 之间的自动加载测试

dev-master 2016-05-30 11:42 UTC

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 自动加载之间的区别

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