我知道您可以使用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
中,然后在整个存储库中随心所欲地使用它。
除非修改PHP运行时,否则这是不可能的。namespace
和use
声明仅在它们出现的物理文件中有效。这些声明不会跨越include
s。如果它们跨越了,那么管理命名空间和别名将是一场噩梦。
在每个文件的顶部声明这些只是你必须接受的事情。大多数具有与PHP名称空间类似功能的语言都是这样做的。
指向文档的链接。