Я никогда не видел эту структуру нигде, поэтому я сомневаюсь, что это что-то не так с выражением вроде этого:
if (condition) { use Symfony\Component\HttpFoundation\Response; }
Единственное, что нужно сделать, это псевдоним имени класса. Вот и все. Больше ничего.
Вместо того, чтобы многократно писать полное имя класса в вашем скрипте:
$q = new \Foo\Bar\Baz\Quux; if ($q instanceof \Foo\Bar\Baz\Quux) ...
Вы можете сократить это до:
use Foo\Bar\Baz\Quux; $q = new Quux; if ($q instanceof Quux) ...
Таким образом, совершенно не имеет смысла хотеть использовать use
условно. Это просто синтаксический помощник; если его можно использовать условно, ваш синтаксис скрипта станет двусмысленным, чего никто не хочет.
Это не снижает загрузку кода, потому что код загружается явно только с помощью вызовов require
/ include
или с помощью автоматической загрузки. Последний очень предпочтителен, так как он лениво начинает действовать только тогда, когда это необходимо.
Это вызовет синтаксическую ошибку. Из TFM:
Ключевое слово
use
должно быть объявлено в самой внешней области файла (глобальной области) или внутри декларации пространства имен. Это связано с тем, что импорт выполняется во время компиляции, а не во время выполнения, поэтому его нельзя блокировать.