0

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

我想更进一步,不再需要在单个文件中手动编写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然后在所有存储库中按照我的意愿使用它。

4

1 回答 1

2

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

在每个文件的顶部声明这些只是您必须忍受的事情。大多数具有与 PHP 命名空间相似的特性的语言都是这样做的。

链接到文档

于 2013-07-16T13:41:28.523 回答