我知道您可以使用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
,然后在我希望的所有存储库中使用它。
答案 0 :(得分:2)
除非您修改PHP运行时,否则这是不可能的。 namespace
和use
声明仅在它们出现的物理文件中有效。这些声明不会跨越include
。如果他们这样做,你就会有一个真正的噩梦来管理命名空间和别名。
在每个文件的顶部声明这些只是你必须要忍受的东西。大多数具有与PHP命名空间类似功能的语言也是如此。