Правильная работа с ООП в PHP

Рейтинг: 0Ответов: 1Опубликовано: 16.03.2023

Просьба помочь мне разобраться с ООП в PHP. Ранее как то мне такой опыт не требовался и ООП старался как-то обойти стороной, но времена меняются как говорится и нужно познавать что то новое. И перед вопросом своим скажу что я знаю и вроде как понимаю и если в чем то ошибусь то если не сложно поправьте пожалуйста. И так ООП у нас записывается в классах

class Test{

}
$test = new Test()

Так же у нас есть методы которые начинаются с function.

Вот представим у меня есть два файла test1.php и test2.php. В test1.php создаем класс для подключения к бд и несколько методов с запросами.

test1.php

class Pdo{
  protected $pdo = null;
  protected $stmt1 = null;
  protected $stmt2 = null;
  function __construct () {
    try {
      $this->pdo = new PDO(
        "mysql:host=".DB_HOST.";charset=".DB_CHAR.";dbname=".DB_NAME,
        DB_USER, DB_PASS
      );
    } catch (Exception $ex) { exit($ex->getMessage()); }
  }
  function __destruct () {
    if ($this->pdo !== null) { $this->pdo = null; }
    if ($this->stmt1 !== null) { $this->stmt1 = null; }
    if ($this->stmt2 !== null) { $this->stmt2 = null; }
  }

  function query1 () {
    $this->stmt1 = $this->pdo->prepare(
      "SELECT *, UNIX_TIMESTAMP(`time`) AS `unix`
       FROM `score` ORDER BY `time` DESC LIMIT 1"
    );
    $this->stmt1->execute();
    return $this->stmt1->fetch(PDO::FETCH_ASSOC);
  }

  function query2 () {
    $this->stmt2 = $this->pdo->prepare(
      "SELECT *, UNIX_TIMESTAMP(`time`) AS `unix`
       FROM `score` ORDER BY `time` DESC LIMIT 1"
    );
    $this->stmt2->execute();
    return $this->stmt2->fetch(PDO::FETCH_ASSOC);
  }

}

Скажу сразу что бы не было вопросов в методах query1 и query2 один и тот же запрос для примера и не более того. И вот как мне правильно подключить class из test1.php в class test2.php

test2.php

class Test{
  function test1() {

    // Тут выводим какой то html код в котором нужно выполнить
    // в первой половине кода query1 ну а во второй query2
    //
    // Простой пример
    echo "<div>". query1 ."</div>";
    echo "<div>". query2 ."</div>";
    //
    // И тут же сразу спрошу что бы вызвать из этого метода метод test2
    // Так должно выглядить?

    $this->test2();

  }
  function test2() {
    ***
  }
}

Если можно на вопросы не много развернуто ответить заранее Вам благодарен. Вижу что не очень сложно. Вот только вроде бы на первый взгляд простые моменты не как не поддаются пониманию.

Ответы

▲ -1

Сейчас вроде бы не много разобрался хотел бы что бы сказали правильно ли делаю или нет. Так же два файла test1.php и test2.php

test1.php я переписывать не буду так как оно осталось неизменным

test2.php

<?php

include 'test1.php';

class Test{
  protected $var;
  function __construct(Pdo $var2){
    $this->var = $var2;
  }
  function __destruct(){
    if($this->var !== null){ $this->var = null; }
  }

  function method1(){
    echo "<div>" . $this->var->query1() . "</div>";
    echo "<div>" . $this->var->query2() . "</div>";
  }

}

$res = new Test(new Pdo);
$res->method1();

?>