2011-01-19 4 views
1

у меня реальные проблемы, получать мою голову вокруг классов, и я надеюсь кто-то может ответить на моем (очень простой!) ВопросАльтернатива доступа к классам внутри классов

У меня есть класс MySQL, позволяющий мне настроить тузды соединение, выполнение запросов и других связанных с ним функций mysql.

У меня есть настройка базы данных с родительской \ дочерней структурой и есть рекурсивная функция (моя функция createNode), которая выводит набор вложенных списков, отражающих родительскую \ дочернюю структуру.

Функция createNode создает экземпляр класса mysql для каждой рекурсии для запроса необходимых данных из базы данных.

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

Как я могу структурировать свои классы, чтобы обойти эту проблему?

Заранее благодарен!

+1

Нет, ** это не плохая практика **, чтобы создать экземпляр класса внутри другого (см. Заводской шаблон, например). Однако в этом конкретном случае вы можете просто передать класс MySQL в конструктор класса NodeCreator. – netcoder

ответ

3
class Noder { 
    private $_conn; 
    public function __construct($mysql_connection) 
    { 
    $this->_conn = $mysql_connection; 
    } 
    public function createNode() 
    { 
    // whatever you do 
    } 
} 
$mysql = new Mysql(); 
$noder = new Noder($mysql); 
+0

+1 То, что я говорил в своем комментарии выше. :) Вы также можете (и, вероятно, должны) навести подсказку на тип 'Mysql'. – netcoder

+0

Спасибо и scragz и netcoder за ваши быстрые ответы, очень ценим! Пример кода отличный, как и ваше описание netcoder. Это имеет смысл для меня :-) Я попробую это сейчас. – discojoe

Смежные вопросы