Сообщение об ошибке несколько вводит в заблуждение; use
операторы являются сокращенной формой для имени класса в конкретном исходном файле и предназначены исключительно для удобства; вам никогда не нужно нуждаться в выражении use
, и они не имеют никакого значения для имен классов, на которые ссылаются динамически, как вы делаете здесь.
Ваша настоящая проблема заключается в том, что когда вы находите файл Foo.php
, вы пытаетесь загрузить класс с именем Foo
(или, в одном из ваших попыток исправления, \Foo
), когда фактическое имя класса App\Service\Adapter\Foo
.
Исправление, следовательно, простое: используйте полное имя класса с префиксом пространства имен:
$className = 'App\Service\Adapter\\' . $cuttedString[0];
(Обратите внимание, что последний \
должен быть экранирован как \\
, потому что даже в строке в одинарных кавычках \'
действует как экранированный знак кавычки, так что вы можете написать 'foo\'s bar'
.)