PHP Composer包含定义为“的文件”;使用名称空间作为";语句,附加到每个文件

PHP Composer包含定义为“的文件”;使用名称空间作为";语句,附加到每个文件,php,namespaces,include,composer-php,autoloader,Php,Namespaces,Include,Composer Php,Autoloader,我知道您可以使用Composer的文件方案自动在中包含函数或定义 我想更进一步,不再需要在单个文件中手动编写use classname as语句。这是我的理想设置: /composer.json: { "require": { "slim/slim": "2.*" } "autoload": { "files": ["init.php"] } } /init.php: use Slim\Slim as Slim; use Slim

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

我想更进一步,不再需要在单个文件中手动编写
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");
require '/vendor/autoload.php';
echo RYAN; //  ✔ outputs "BRODIE"
new Slim(); //  × Fatal error: Class 'Slim' not found
/example.php

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

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

除非修改php运行时,否则这是不可能的<代码>命名空间和
使用
声明仅在它们出现的物理文件中有效。这些声明不跨
include
s。如果他们这样做了,那么管理名称空间和别名将是一场噩梦

在每个文件的顶部声明这些文件只是你不得不忍受的事情。大多数具有类似于PHP名称空间特性的语言都具有相同的特性


.

我同意不能跨文件设置
名称空间,这是显而易见的逻辑,但是
用作语句
?该错误可能与在一个文件中设置同一别名两次相同。当你链接到文档(我在发布QS:D之前找不到)时,你的标记会正确,这并不是说我不相信你。在不同的名称空间中有相同名称的类真的很常见。事实上,这正是名称空间设计的目的。如果你给它们加上别名,并且别名跨越多个文件,那么在避免命名冲突方面,你又回到了原点,只是这次称为“别名冲突”。我理解名称空间的意义,或者我显然不会实现它们。我并不是说上述方法不适用于所有人,但对某些人有效。我是说,它在很大程度上否定了名称空间的重要性,因此它不起作用。:)这是你的文件,顺便说一句:为我的无礼道歉