php closures — Php require () не распознает псевдоним класса

В основном это связано с моей структурой кода:

File1.php

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

File2.php

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

Какая-то часть позади ... as не распознается после использования require(),

0

Решение

Псевдонимы пространства имен действительны только в файле, в котором вы пишете use заявление. Псевдонимы не переносятся через границы файлов. Если хотите use Class1 as Blah в File2.php, вы должны поместить этот оператор в начало File2.php.

4

Другие решения

не распознается кодом — 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()->...
0

По вопросам рекламы [email protected]