0

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

文件1.php

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

文件2.php

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

... as不知何故,使用后无法识别后面的部分require()

4

2 回答 2

4

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

于 2016-12-14T11:59:37.990 回答
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()->...
于 2016-12-14T11:59:18.617 回答