#php #laravel
#php #laravel
Вопрос:
Я хочу создать экземпляр класса внутри цикла, я пытался это сделать:
<?php
use AppCaves_demographic_info;
use AppCaves_current_uses;
use AppCaves_flora_outside;
public function get_page4_contd_data($id) {
$tables = [
'Caves_demographic_info', 'Caves_current_uses', 'Caves_flora_outside',
];
for($index = 0; $index < count($tables); $index ) {
${$tables[$index]."_model"} = new $tables[$index];
}
}
?>
Это выдает ошибку ‘Class {имя_класса} не найден’, возможно ли это сделать внутри цикла?
Ответ №1:
Ваш подход кажется правильным, можете ли вы попробовать (с пространством имен)
$className = 'App' . $tables[$index];
$class = new $className;
Итак, что-то вроде этого в вашем примере:
$tables = [
'AppCaves_demographic_info',
'AppCaves_current_uses',
'AppCaves_flora_outside',
];
for($index = 0; $index < count($tables); $index ) {
${$tables[$index]."_model"} = new $tables[$index];
}
Комментарии:
1. все еще не работает.. второй подход выдает ту же ошибку. первый подход приводит к неожиданной ошибке
2. Можете ли вы попробовать это с namespace? Я только что попробовал в своем коде, с полным пространством имен это должно сработать
3. но как бы вы проанализировали обратную косую черту в строке?
4. удачного кодирования! 🙂
5.
$className = 'App' . $tables[$index];
должно быть$className = 'App\' . $tables[$index];
(экранированная обратная косая черта).