Не могу вывести свойство объекта на странице вывода. Делаю страницу новостей, вот само задание: - Создайте класс Article - модель одной новости - Создайте класс News - модель хранилища новостей news.php - отображает список всех новостей. Заголовок у каждой - ссылка на страницу этой новости, под заголовком - краткий текст Создал класс News: <?php class News { public $newsarray = []; public function getNews() { return $this->newsarray; } public function upload(Article $article) { $this->newsarray[] = $article; } } Класс Article: <?php class Article { public $header; public $text; public $shorttext; public function __construct($header,$shorttext, $text) { $this->header = $header; $this->text = $text; $this->shorttext = $shorttext; } } Файл входа <?php require __DIR__ . '/CArticle.php'; require __DIR__ . '/CNews.php'; require __DIR__ . '/../view.php'; $Article1 = new Article ('заголовок1', 'Описание1', 'Полный текст1'); $Article2 = new Article ('заголовок2 ', 'описание2', 'Полный текст2'); $newsdata = new News; $newsdata->upload($Article1); $newsdata->upload($Article2); $view = new View(); foreach ($newsdata->getNews() as $index => $value) { $view->assign($index,$value); } foreach ($view->__construct() as $index => $value) { $view->display('news'); } Вот файл вывода: <html> <head> <title> Все Новости </title> </head> <body> <a href="" id="1"><h2><?= ___________?></h2></a> <br> <article>'Описание' </article> <br> </body> </html> На месте нижних подчеркиваний не могу понять никак что написать. Пытался такое: $value->text $this->value1[$index]->$value->text в целом суть понимаю но никак не могу догнать что не так. Я вижу это так: я создал обьекты класса статьи, засунул их в обьект класса книги новостей. И пытаюсь вывести свойство обьекта в обьекте через foreach несколько раз. Но индекс и значение файл отображения почему то не видит. Помогите разобраться
Забыл написать класс View: <?php class View { protected $value1 = []; public function __construct() { return $this->value1; } public function assign($name,$value) { $this->value1[$name] = $value; } public function display($template) { include __DIR__ . '/news/' . $template .'.php'; } public function render($template) { ob_start(); include __DIR__ . '/' . $template .'.php'; $bufdata = ob_get_contents(); ob_end_clean(); return $bufdata; } }
PHP: <?php // метод render() класса View public function render($template) { ob_start(); extract($this->value1); // <--- ключевая идея include __DIR__ . '/' . $template .'.tpl.php'; $bufdata = ob_get_contents(); ob_end_clean(); return $bufdata; } PHP: <!-- шаблон --> <html> <head> <title> Все Новости </title> </head> <body> <?php foreach ($news as $acticle) : ?> <article> <h2><?= $acticle->header; ?></h2> <p><?= $acticle->shorttext; ?></p> </article> <?php endforeach; ?> </body> </html> Все вместе в сборе https://glot.io/snippets/g8y6en8g91