Полимормизм с Абстракцией в PHP ООП

157
29 апреля 2019, 01:20

Добрый день друзья возникла проблема с выводом информации из баз данных. Подскажите как можно решить задачу.Заранне спасибо Вот код классов

include 'db.php';
abstract class Example
{
    public $firstname;
    public $lastname;
    public $age;
    public $city;
    public $country;

    function __construct()
    {
        $this->firstname=$info['firstname'];
        $this->lastname=$info['lastname'];
        $this->age=$info['age'];
        $this->city=$info['city'];
        $this->country=$info['country'];
    }
   abstract function GetInfo();
}
class First  extends Example
{
  function GetInfo()
  {
    print "Your Name Is : \n" . $this->firstname . "<br>";
    print "Your Lastname Is : \n" . $this->lastname . "<br>";
  }
}
$first = new First;
print $first->GetInfo();
class Second  extends Example
{
  function GetInfo()
  {
    print "Your Age Is : \n" . $this->age . "<br>";
    print "Your City Is : \n" . $this->city . "<br>";
    print "Your Country Is : \n" . $this->country . "<br>";
  }
}
$second = new Second;
print $second->GetInfo();

Код Баз Данных db.php

$hostname = "localhost";
$username = "root";
$password = "";
$database = "website";
$connection = mysqli_connect($hostname , $username , $password , $database);
if(!$connection)
{
  die("No Connection" . mysqli_connect_error());
}
$sql='SELECT * FROM `info`';
$result=mysqli_query($connection, $sql);
if(mysqli_num_rows($result) > 0)
{
    while($row=mysqli_fetch_assoc($result))
    {
        $info[]=$row;
    }
    return $info;
}
Answer 1

На return info выполнение прерывается, уберите эту строчку. Info нужно передавать в конструктор параметром. Использовать глобальные переменные очень плохо с точки зрения архитектуры и ооп. в db.php:

if(mysqli_num_rows($result) > 0)
{
    while($row=mysqli_fetch_assoc($result))
    {
        $info[]=$row;
    }
    //return $info; убираем эту строку
}

В колассе Example:

function __construct($info)
{
    $this->firstname=$info['firstname'];
    $this->lastname=$info['lastname'];
    $this->age=$info['age'];
    $this->city=$info['city'];
    $this->country=$info['country'];
}

При создании экземпляров передаем в конструктор $info^

$first = new First($info);
$second = new Second($info);
READ ALSO
Немогу понять в чем проблема, можете помочь? Не обновляються данные пользователя

Немогу понять в чем проблема, можете помочь? Не обновляються данные пользователя

Попробуйте убрать второй session_start() и поменять проверку $_SESSION на проверку не через сравнение, а через if(isset($_SESSION['auth']))

153
Форма обратной связи Wordpress

Форма обратной связи Wordpress

Ребят,помогите запустить форму обратной связи на Wordpress,без плагинов Вот оригинальный код страницы темы , pagephp

160
Ошибка ext-mysqli is missing in composer.json

Ошибка ext-mysqli is missing in composer.json

При попытке обработать следующие команды:

165