所以主要是由我的代码结构引起的:
File1.php
use \Class1 as Blah;
require 'File2.php';
File2.php
$closure = function ($arg) {
return new Blah($arg);
};
使用... as
后无法识别require()
后面的部分。
答案 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()->...