Используйте переменную в качестве пространства имен

В каком-то другом файле (someusername\classes\MyClass например) у меня есть

<?php
namespace someusername;
class MyClass
{
static function Test()
{
echo "working";
}
}
?>

Я наткнулся на раздражающий маленький барьер:

<?php

$user = "someusername";
$class = "MyClass";

require_once "$user\\classes\\$class";

//This line should be the equivalent of 'use someusername as User;'
use $user as User; //Parse Error: syntax error, unexpected '$user'

$c = "User\\$class";
$UserSpecificClass = new $c();
?>

Я могу обойти это с помощью следующего, но оператор использования сделает вещи намного лучше

<?php

$user = "someusername";
$class = "MyClass";

require_once "$user\\classes\\$class";

$c = "$user\\$class";

$UserSpecificClass = new $c();
?>

Можно ли использовать переменные в use заявление в PHP? Или лучше избегать использования оператора с таким подходом?

1

Решение

Импорт выполняется во время компиляции.

Присвоение переменной выполняется во время выполнения после компиляции, после чего любой импорт уже должен быть импортирован.

Так что это невозможно. Лучшее решение действительно было бы использовать FQN в строке и инициализировать это.

$c = "$user\\$class";

$UserSpecificClass = new $c();
2

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

Других решений пока нет …

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