У меня проблема с моей библиотекой codeigniter. Чтобы преобразовать данные базы данных в навигацию и иметь активные элементы и тому подобное, я создаю библиотечный класс CI_Navigation ().
Работает отлично, у меня только одна проблема.
Часто на веб-страницах есть соответствующие, но отдельные навигации, например основная навигация вверху и субнавигатор сбоку. Чтобы обойти это, я могу инициализировать свой класс с параметром, сообщающим ему, какие уровни должна удерживать навигация.
Я бы, например, сделал что-то вроде этого.
$this->load->library('Navigation');
$main = $this->navigation->build( array('levels'=>array(0)) );
$sub = $this->navigation->build( array('levels'=>array(1,2)) );
Как и следовало ожидать, это не работает, потому что данные в классе остаются такими же, какими они были назначены при первом вызове сборки.
К сожалению, в CodeIgniter библиотеки являются синглетонами (верно? Это то, что я читал). Поэтому я не могу инициализировать его дважды, как:
$this->load->library('Navigation','','main');
$this->load->library('Navigation','',sub);
У вас есть идеи, как я могу преодолеть эту проблему.
Это должно сработать, если бы я использовал массивы для переменных, используемых в классе, верно?
Например. для опций вместо использования опции $ this-> мне нужно было бы динамически создать $ this -> $ option [0], $ this -> $ option [1].
Это работает? Я не могу проверить это в данный момент, но сделаю это сегодня вечером. Но это не очень элегантный способ, так есть ли лучший способ решить это? Можно ли как-нибудь инициализировать библиотеку несколько раз?
Заранее спасибо, ребята.