erniesto77
@erniesto77
oop, rb, py, php, js

Как получить список всех моделей в laravel?

Всем привет. Задача в том, что нужно получить массив всех созданных моделей.
Может быть в laravel есть такой метод, который возвращает список всех существующих моделей в проекте?
Если нет, то например, если модели находятся прямо в папке app/ то как перебрать все файлы с большой буквы в папке app, при этом не заходя в субдиректории? Или может быть как то можно перебрать все классы, которые прямые наследники для App?

Заранее всем спасибо.
  • Вопрос задан
  • 930 просмотров
Решения вопроса 1
LightAir
@LightAir
LA
1)
Получаем список файлов с помощью scandir
Потом фильтруем к примеру через preg-match

2) Через использование внешних программ
$row = exec('ls -ls',$output,$error);
while(list(,$row) = each($output)){
echo $row, "<BR>\n";
}
if($error){
echo "Error : $error<BR>\n";
exit;
}

Потом фильтруем к примеру через preg-match

3) Вручную составить список и положить в json || db || xml || txt и т.д.

P.S.
Вот пример кстати из stackoverflow.com/questions/31837075/laravel-get-l...

$dir = '/path/to/model/directory';
$files = scandir($dir);

$models = array();
$namespace = 'Your\\Model\\Namespace\\';
foreach($files as $file) {
  //skip current and parent folder entries and non-php files
  if ($file == '.' || $file == '..' || !preg_match('\.php', $file)) continue;
  $models[] = $namespace . preg_replace('\.php$', '', $file);
}

print_r($models);


P.P.S Так же файлы можно получить с помощью какой либо библиотеки. К примеру с finder не придётся составлять регулярку, достаточно будет проверить экземпляр класса на необходимое соответствие с помощью instanceof.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы