Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$users[] = $user; нет $users = array();? Нет, не будет. Из мана: «Если массив $arr еще не существует, он будет создан.» Хотя обычно объявляю сам не знаю зачем.public function getAll($limit=10)
{
$this->db_connector->query("SELECT * FROM users LIMIT {$limit}");
}
<?=$example; ?>
foreach ($users as $user) {
$user_names[] = new NamePresentation(user.getName());
$user_ids[] = new IdPresentation(user.getId());
}
$view = new ViewFabric::getHtmlView('index', PHP_RENDERER);
$view->render($user_names, $users_ids);
$view->show();
$model = new Model();
$view = new View();
$list = $model->getList();
foreach ($list as $item)
$values[] = $item->getValue(); // отвязывание данных представления от бизнес-модели
for ($i=0; $i<len($values); $i++)
$view->addLabelForValue(); //создание контролов
for ($i=0; $i<len($values); $i++)
$view->fillLabelForValue($i, $values[$i]); //Заполнение контролов
$view->show();
<input type="checkbox" <?= MyBE->IsUser()? "checked" : "" ?> >
— представление у нас отделено от всего остального, всё что ему нужно, чтобы был в его области видимости массив users из объектов с методом getName()
include 'index.php.html'; как раз и генерирует html с точки зрения контроллера. По-хорошему там должно быть что-то вроде render('index.php.html', $users); (или render('index.php.html', new IndexModel($users)); если использовать отдельную модель представления), но суть не изменится, генерация html уже изолирована от контроллера, он не знает даже есть ли там html или генерируется, скажем, json.ob_start(); // перехват вывода
include 'index.php.html';
$content = ob_get_clean(); // получение вывода как строки
file_put_contents('index.html', $content); // пишем перехваченный вывод в файл
readfile('index.html'); // выдаём файл
Другой взгляд на эволюцию гадкого утёнка или рефакторинг спагетти