这个问题在这里已经有了答案:
PHP namespaces and require
(1 个回答)
2年前关闭。
这个问题对你们中的许多人来说可能听起来很愚蠢,但我仍然无法在文档中找到任何线索(我做了 RTFM)。
当您在 php 文件中设置一个 php 变量,然后在您需要的文件中使用它时,它完全可以工作。
但是今天,在尝试对命名空间做同样的事情时,我遇到了一个意外错误。
在主 php 文件中:
include("./scripts/proj4php/vendor/autoload.php");
use proj4php\Proj4php;
use proj4php\Proj;
use proj4php\Point;
// Initialise Proj4
$proj4 = new Proj4php();
require './functions/myfile.php';
在 myfile.php 中:
$pointDest = $proj4->transform($projWGS84, new Point($r['coord_x'], $r['coord_y'], $projL2e));
最后一条车道抛出了一个未定义的点类错误,而如果我将这一行放在主 php 文件中,那就完全没问题了。
$proj4 和 Point() 都已在主 php 文件中设置,但在所需的 php 文件中只有 $proj4 是好的。
怎么会 ?这里的逻辑是什么?
谢谢大家的帮助 !
最佳答案
您在 main.php 文件中为 proj4php\Point
创建了一个别名,但该别名不会扩展到其他文件,因为它是在编译时解析的,而不是运行时。
您需要在使用它的文件中别名/导入该类。老实说,如果您不在 main.php 中使用它,我认为在 main.php 中导入 Point 毫无意义。
关于php - 为什么命名空间不能在 PHP 所需的文件中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55341465/