<?php
// file publication.php
require_once 'data.php';
foreach ($publication as $item) {
print_r ($item->printItem());
}
// файл data.php get all data - > array {news}
require_once 'class.php';
$publication = array();
// подключение к BD
$con = mysqli_connect("localhost", "root", "****", "temp_php");
mysqli_set_charset($con, "utf8");
if (mysqli_connect_error()) {
echo "Failed is connect to MySQL ".mysqli_connect_error();
}
// получение данных
$query = 'SELECT * FROM sql_news;';
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_array($result)) {
$publication[] = new $row['category_id']($row); // new $row['category_id']($row); - эта конструкция - new ClassName($dataToConstructor)
}
// file class.php
abstract class SQL_news {
// создали класс соттветсвующий названию sql таблицы,
// соответсвенно свойства класса соответсвуют полям в таблице
// класс абстрактный - то есть он не предполагает создания объектов для этого класса
public $id;
public $h1;
public $short_content;
public $content;
public $category_id;
public $author_id;
public $date;
public $preview;
public $status;
function __construct($row){
$this->id = $row['id'];
$this->h1 = $row['h1'];
$this->date = $row['date'];
$this->short_content = $row['short_content'];
$this->content = $row['content'];
$this->preview = $row['preview'];
$this->author_id = $row['author_id'];
$this->category_id = $row['category_id'];
}
}
class NewsPublication extends SQL_news {
public function printItem(){
// echo '<br>Вызван метод '.__METHOD__;
echo "<br><strong>Новость Общества</strong>";
echo "<h1>".$this->h1."</h1>";
echo $this->date;
echo "<p>".$this->content."</p>";
echo '<hr>';
}
}
class ArticlePublication extends SQL_news {
public function printItem(){
// echo '<br>Вызван метод '.__METHOD__;
echo "<br><strong>Новость Культуры</strong>";
echo "<h1>".$this->h1."</h1>";
echo "<p>".$this->short_content."</p>";
echo '<hr>';
}
}
class PhotoReportPublication extends SQL_news {
// фотография и заголовок
public function printItem(){
// echo '<br>Вызван метод '.__METHOD__;
echo "<br><strong>Фотоотчет</strong>";
echo "<h1>".$this->h1."</h1>";
echo '<img style="max-width:100%" src="'.$this->preview.'" >';
echo '<hr>';
}
}
?>