为什么命名空间不能在PHP所需的文件中工作? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

这个问题对你们很多人来说可能听起来很愚蠢,但我仍然无法在文档中找到任何线索(我做过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));

最后一个通道是抛出Undefined Point类错误,而如果我将该行放在主php文件中则完全没问题。

$ proj4和Point()都已在主php文件中设置,但只有$ proj4在所需的php文件中正常。

怎么会 ?这里的逻辑是什么?

感谢大家的帮助 !

php class namespaces require
1个回答
1
投票

您在main.php文件中为proj4php\Point创建了一个别名,但该别名不会扩展到其他文件,因为它在编译时解析,而不是运行时。

您需要在使用它的文件中对该类进行别名/导入。老实说,如果你不在那里使用它,在main.php中导入Point是没有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.