Php require()无法识别别名类

时间:2016-12-14 11:38:12

标签: php php-closures

所以主要是由我的代码结构引起的:

File1.php

use \Class1 as Blah;
require 'File2.php';

File2.php

$closure = function ($arg) {
    return new Blah($arg);
};

使用... as后无法识别require()后面的部分。

2 个答案:

答案 0 :(得分:4)

命名空间别名仅在您编写use语句的文件中有效别名不跨文件边界传输。如果你想在File2.php中use Class1 as Blah,你需要将该语句放在File2.php的顶部。

答案 1 :(得分:0)

  代码无法识别

- Slim不是编译器,它是一个框架。

代码将执行PHP编译器标准,因此使用默认值。

use SomeNamespace\SomeClass as SomePrefix;

无论你想要实现什么,都会有效。 require_once()方法会加载包含该类的PHP文件,我假设它没有自定义命名空间,因为您定位了\目录。

如果您在课堂上工作,那么这可能是您的问题,在使用require_once()加载ParseMarkdownClass文件后,您的代码应该与此类似。

use ParseMarkdownClass as Md;

class SomeClass
{
    public $container;

    public function __construct()
    {
        $this->container = (object)['m' => function() {
            return new Md();
        }];
    }
}

(new SomeClass())->$container->m()->...