В каком-то другом файле (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? Или лучше избегать использования оператора с таким подходом?
Импорт выполняется во время компиляции.
Присвоение переменной выполняется во время выполнения после компиляции, после чего любой импорт уже должен быть импортирован.
Так что это невозможно. Лучшее решение действительно было бы использовать FQN в строке и инициализировать это.
$c = "$user\\$class";
$UserSpecificClass = new $c();
Других решений пока нет …