Включение класса в другой класс в php - PullRequest
3 голосов
/ 24 февраля 2012

У меня есть класс 'search', который используется только при определенных обстоятельствах. Решение о том, нужен ли 'поиск' или нет, принимается в классе 'page' в функции 'setupPage'. Это нормально (это хорошее кодирование), чтобы включить класс в другой класс?

class Page {
    private function setupPage($page_id){
        switch($page_id){
            case 1:
            // do something
            break;

            case 2:
            include_once('class_search.php');
            // class search is singleton
            $this->search = Search::getInstance();
            // now I can use functions of 'search'
            $this->search->someSearchFunction();
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

это абсолютно нормально, но у вас есть и другая альтернатива. Возможно, вы захотите взглянуть на функцию автозагрузки в php

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

всякий раз, когда вы создаете новый класс. PHP автоматически вызывает функцию __autoload с одним аргументом, т.е. именем класса. рассмотрим приведенный ниже пример

$user = new User():

когда вы создаете экземпляр пользовательского объекта, здесь вызывается функция автозагрузки, он пытается включить файл из того же каталога. (со ссылкой на вышеупомянутую функцию автозагрузки). Теперь вы можете реализовать свою собственную логику для автозагрузки классов. независимо от того, в каком каталоге он находится. Для получения дополнительной информации перейдите по этой ссылке http://in.php.net/autoload.

2 голосов
/ 24 февраля 2012

Я бы этого не делал. Если вы хотите, чтобы ваши классы только загружались, если они необходимы, я предлагаю вам использовать для этого автозагрузку PHP. Вот документация.

0 голосов
/ 24 февраля 2012

Это не должно быть проблемой, если вы используете автозагрузку , это может произойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...