Нужно как-то использовать метод класса в методе другого класса

Тема в разделе "Как сделать...", создана пользователем danneo, 4 мар 2014.

  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Есть два класса: работа с БД (class my_db) и различные функции (class myClass).
    Хочу сделать запросы к БД, но не хочу писать кучу кода по подключению и т.п. Проще $db->query и т.д.
    Знаю только через объявление переменной из глобального массива:
    public function myMethod(){
    global $db;
    //тут делаем различные операции, типа $db->query
    }
    Есть еще способы использовать методы из класса my_db, чтобы не было лишних проблем с нагрузкой и безопасностью?
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.546
    Симпатии:
    1.418
  3. murlo

    murlo Создатель

    Регистр.:
    8 июн 2006
    Сообщения:
    34
    Симпатии:
    33
    Тема интересная.
    Но потихоньку пришёл к выводу.
    global $db
    И вызываем всё что нужно, не парим мозг себе и тем кто будет потом это видеть.
    $db->то_что_нужно()
    Подстраиваться надо под всех, а не подстраивать всех под себя
     
  4. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Это я как-то раньше изучал, наследования классов и т.п. Я это дело хочу сделать в DLE, где нет единого класса. Да и наследовать класс для работы с БД, как-то не хочется, ради одного метода.
     
  5. Arm45

    Arm45 Создатель

    Регистр.:
    14 фев 2014
    Сообщения:
    10
    Симпатии:
    0
    autoload (http://www.php.net/manual/ru/language.oop5.autoload.php)
    наше всё
    Кидаешь в определенную папку(папки) все классы - пишешь в начале index.php свою функцию __autoload.
    В любом месте скрипта, когда напишешь класс - функция подгрузит твой класс.

    <?php
    function __autoload($class_name) {
    include $class_name . '.php';
    }

    $obj = new MyClass1();
    $obj2 = new MyClass2();
    ?>
     
  6. jDony

    jDony Создатель

    Регистр.:
    25 янв 2014
    Сообщения:
    41
    Симпатии:
    40
    Вообще советую почитать про стандарты PSR(а именно Psr-0 и PSR-4)
    Реализацию класса можно посмотреть тут - https://github.com/pavlenko/SplClassLoader

    Вообще я последнее время предпочитаю использовать autoload от composer (http://getcomposer.org). Он поддерживает как PSR-0, так и PSR-4(последнии версии).