Как создать несколько экземпляров библиотечного класса в CodeIgniter?
Я хотел бы создать несколько экземпляров класса в CodeIgniter. Я создал свой класс как библиотеку, но не могу понять синтаксис, который можно использовать для создания более одного экземпляра.
3 ответа
Из руководства пользователя CodeIgniter:
Руководство пользователя CI: класс загрузчика
Присвоение библиотеки другому имени объекта
Если третий (необязательный) параметр пуст, библиотека обычно назначается объекту с тем же именем, что и библиотека. Например, если библиотека называется Session, она будет назначена переменной с именем $this->session.
Если вы предпочитаете устанавливать собственные имена классов, вы можете передать его значение третьему параметру: $ this-> load-> library ('session', '', 'my_session');
// Доступ к классу сеанса теперь осуществляется с помощью:
$ This->my_session
Я думаю, это то, что вы ищете.
Я знаю, что этот шаг давно пройден, но это был один из вопросов, с которыми я столкнулся, когда искал ответ. Итак, вот мое решение...
Это PHP. Создайте свой класс как библиотеку, загрузите его, используя стандартный класс загрузчика CI, но используйте его, как в обычном PHP-скрипте.
Создайте свой класс:
class My_class {
var $number;
public function __construct($given_number){
$number = $given_number;
}
public function set_new_num($given_number){
$number = $given_number;
}
}
Загрузите это:
// This will load the code so PHP can create an instance of the class
$this->load->library('My_class');
Затем создайте экземпляр и используйте объект там, где это необходимо:
$num = new My_class(24);
echo $num->number;
// OUTPUT: 24
$num->set_new_num(12);
echo $num->number;
// OUTPUT: 12
Единственный раз, когда я использую $this->my_class, это делать вызовы статических функций, которые я кодирую.
Извините за оживление этой темы, но я думаю, что могу добавить что-то разумное.
Вы можете сделать это, чтобы добавить несколько экземпляров класса. Я не знаю, нарушает ли оно в любом случае стандартное использование codeigniter, но кажется, что больше codeigniter-ish, чем загрузка библиотеки (которая создает $this->library_name, которая не используется), а затем создание 2 БОЛЬШЕ экземпляров с ключевым словом "new".
$this->load->library( 'my_library', '', 'instance1' );
$this->load->library( 'my_library', '', 'instance2' );
$this->instance1->my_class_variable = 1;
$this->instance2->my_class_variable = 2;
echo $this->instance1->my_class_variable; // outputs 1
echo $this->instance2->my_class_variable; // outputs 2
Я использую это в своем коде для создания различных меню. У меня есть класс "меню" и разные экземпляры для каждого меню, с разными пунктами меню в каждом.