В основном это связано с моей структурой кода:
File1.php
use \Class1 as Blah;
require 'File2.php';
File2.php
$closure = function ($arg) {
return new Blah($arg);
};
Какая-то часть позади ... as
не распознается после использования require()
,
Псевдонимы пространства имен действительны только в файле, в котором вы пишете use
заявление. Псевдонимы не переносятся через границы файлов. Если хотите use Class1 as Blah
в File2.php, вы должны поместить этот оператор в начало File2.php.
не распознается кодом — 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()->...