Псевдоним (использовать … как …) все файлы в каталоге

В настоящее время я пытаюсь оптимизировать структуру, с которой мы разрабатываем веб-сайты, и одна вещь, которая беспокоит меня, — это псевдонимы наших классов. Прямо сейчас у нас есть один огромный список всех необходимых классов, и мы должны добавлять / удалять классы в зависимости от необходимости.

Я бы хотел, чтобы все прошло максимально автоматизировано. У нас есть четыре папки с классами, которые используются на каждом сайте, поэтому я попробовал следующее:

$directories = array(
'../classes/site/database',
'../classes/site/utils',
'../classes/creabea/utils',
'../classes/creabea/database'
);

foreach($directories as $dir){
$dir_contents = new DirectoryIterator($dir);
foreach($dir_contents as $item){
if(!$item->isDot()){
if($item->isDir()){
foreach(new DirectoryIterator($item->getPath().'/'.$item->__toString()) as $file_l2){
if(!$file_l2->isDot()){
$temppath = preg_replace('(\.\./)', '', $file_l2->getPath());
$path = preg_replace('/\//g', '\\', $temppath);
$classname = preg_replace('\.class\.php', '', $file_l2->__toString());
use $path.'\\'.$classname;
}
}
} else {
$temppath = preg_replace('(\.\./)', '', $item->getPath());
$path = preg_replace('/\//g', '\\', $temppath);
$classname = preg_replace('\.class\.php', '', $item->__toString());
use $path.'\\'.$classname;
}
}
}
}

В конце концов, это не сработало, потому что вы не можете позвонить use внутри функций, циклов или подобных вещей: use всегда должен быть в глобальном масштабе.

Есть ли другой способ сделать псевдоним автоматизированным процессом, сохраняя при этом глобальный охват?

0

Решение

От http://php.net/manual/en/language.namespaces.importing.php#language.namespaces.importing.scope

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

Вы не можете заключать операторы использования в блок if или использовать какие-либо вещи во время выполнения для автоматического импорта.

Одним из способов является использование препроцессора, который автоматически сканирует и добавляет классы в это пространство имен.

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector