За последние 24 часа нас посетил 66971 программист и 1641 робот. Сейчас ищет 921 программист ...

Использование функций одного класса в другом

Тема в разделе "PHP для новичков", создана пользователем Stairdeck, 25 июл 2016.

  1. Stairdeck

    Stairdeck Активный пользователь

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Здрасте!
    Ситуация такова, у меня есть класс работы с базой данных, мне нужно его функции использовать в другом классе.

    Вот index.php
    PHP:
    1. <?php
    2.  
    3. include_once("engine/classes/mysql.class.php");
    4.  
    5. $db = new SafeMySql();
    6.  
    7. include_once("engine/classes/main.class.php");
    8.  
    9. $main = new MainClass();
    10.  
    11. $mode = $main->SiteMode();
    12.  
    13. if($mode) echo "HELLO WORLD";
    14. else echo "GOODBYE WORLD";
    15.  
    16. ?>
    Вот класс в котором я вызываю бд:
    PHP:
    1. <?php
    2. class MainClass {
    3.     public function SiteMode()
    4.         {
    5.            
    6.             $mode = $db->getOne('SELECT mode FROM config WHERE id=1');
    7.            
    8.             if($mode == "1") return true;
    9.             else return false;
    10.            
    11.         }  
    12. }
    13. ?>
    В качестве класса для работы с бд использую Этот
    Насколько мне известно там используется паттерн Singletone (поправьте если что не так).
    Понимаю, зачем он нужен, но не понимаю как теперь быть.
    Подскажите пожалуйста, заранее спасибо.
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    PHP:
    1. <?php
    2. class MainClass {
    3.     public function SiteMode()
    4.         {
    5.             $db = new SafeMySql();
    6.             $mode = $db->getOne('SELECT mode FROM config WHERE id=1');
    7.        
    8.             if($mode == "1") return true;
    9.             else return false;
    10.        
    11.         }
    12. }
    Или же, если это нужно, то с помощью наследования
    В принципе, можно делать подключение в конструкторе класса и использовать во всех методах.
     
  3. Stairdeck

    Stairdeck Активный пользователь

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Как будет разумнее всего поступить? Наследованием или же как Вы в примере указали? Как тру кодеры делают? :D
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Я не знаю задач вашего класса. Если работа с БД не ограничивается одним методом, то конструктор:
    PHP:
    1. <?php
    2. class MainClass {
    3.     protected $db;
    4.     public function __construct() {
    5.         $this->db = new SafeMySql();
    6.     }
    7.     public function SiteMode() {
    8.         $mode = $this->db->getOne('SELECT mode FROM config WHERE id=1');
    9.         if($mode == "1") return true;
    10.         else return false;
    11.     }
    12. }
     
  5. Stairdeck

    Stairdeck Активный пользователь

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Да, разумеется не ограничивается. Спасибо за конструктор, кажется это оптимальный вариант.
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    На этот вопрос уже @Ganzal ответит ;)