【问题标题】:Why won't Namespaces Work in a PHP required file? [duplicate]为什么命名空间不能在 PHP 所需的文件中工作? [复制]
【发布时间】:2019-08-15 21:51:19
【问题描述】:

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

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

感谢大家的帮助!

【问题讨论】:

  • Point 类的命名空间是什么?

标签: php class namespaces require


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2011-06-03
    • 2015-09-15
    • 2012-12-26
    • 2012-04-09
    • 1970-01-01
    相关资源
    最近更新 更多