PHP Composer包含定义了“use namespace as”语句的文件,附加到每个文件

时间:2013-07-16 13:38:03

标签: php namespaces include composer-php autoloader

我知道您可以使用Composer的files方案在every file中自动包含函数或定义。

我想更进一步,永远不得不在个别文件中再次手动编写use classname as语句。这是我理想的设置:

/composer.json

{
    "require": {
        "slim/slim": "2.*"
    }
    "autoload": {
        "files": ["init.php"]
    }
}

/init.php

use Slim\Slim as Slim;
use Slim\Route as Route;
define("RYAN","BRODIE");

/example.php

require '/vendor/autoload.php';
echo RYAN; //  ✔ outputs "BRODIE"
new Slim(); //  × Fatal error: Class 'Slim' not found

这样,每当我向现有命名空间添加新的命名空间或类时,我都可以将其添加到init.php,然后在我希望的所有存储库中使用它。

1 个答案:

答案 0 :(得分:2)

除非您修改PHP运行时,否则这是不可能的。 namespaceuse声明仅在它们出现的物理文件中有效。这些声明不会跨越include。如果他们这样做,你就会有一个真正的噩梦来管理命名空间和别名。

在每个文件的顶部声明这些只是你必须要忍受的东西。大多数具有与PHP命名空间类似功能的语言也是如此。

Link to documentation