Задача состоит в том,чтобы с помощью полиморфизма вывести информацию о книгах.
Код прилагаю:
Файл classes.php
include('data.php');
class books
{
public $id;
public $name;
public $author;
public $file_path;
public $type;
public $sort_order;
function __construct($row)
{
$this->id=$row['id'];
$this->title=$row['name'];
$this->author=$row['author'];
$this->file_path=$row['file_path'];
$this->type=$row['type'];
$this->sort_order=$row['sort_order'];
}
}
class booksPdf extends books
{
public function printInfo()
{
echo'<br>Книга:'.$this->name;
echo'<br>Автор:'.$this->author;
echo'<br>Формат файла:'.$this->type;
}
}
class booksDoc extends books
{
public function printInfo()
{
echo'<br>Книга:'.$this->name;
echo'<br>Автор:'.$this->author;
echo'<br>Формат файла:'.$this->type;
}
}
class booksTxt extends books
{
public function printInfo()
{
echo'<br>Книга:'.$this->name;
echo'<br>Автор:'.$this->author;
echo'<br>Формат файла:'.$this->type;
}
}
файл data.php
include('classes.php');
$books[]=array();
// $books[]= array();
$con = mysqli_connect("localhost","root","","testsite");
if(mysqli_connect_errno())
{
echo "feiled to connect to mysqli ". mysqli_connect_errno();
}
$result= mysqli_query($con, "SELECT * FROM books");//запрос в таблице
while ($row = mysqli_fetch_array($result)) //шерстим сформированный массив таблицы базы данных
{
$books[]=new $row['type']($row);//заполняем массив books c помощью конструктора
}
echo '<pre>';
print_r($books);
echo '<pre/>';
Файл books.php
include('data.php');
foreach($books as $item)//шерстим массив, который заполнили в файле data.php
{
print_r($item->printInfo());//для каждого элемента массива вызываем метод класса
}