Как создать несколько экземпляров библиотечного класса в CodeIgniter? - PullRequest
5 голосов
/ 28 марта 2009

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

Ответы [ 3 ]

15 голосов
/ 28 марта 2009

Из руководства пользователя CodeIgniter:

CI Руководство пользователя: класс загрузчика

Назначение библиотеки другому имени объекта

Если третий (необязательный) параметр пусто, библиотека обычно будет присваивается объект с тем же имя в качестве библиотеки. Например, если библиотека называется Session, она будет быть назначены на переменную с именем $ This-> сессия.

Если вы предпочитаете установить свой собственный класс имена, которые вы можете передать его значение третий параметр: $ this-> load-> library ('session', '', 'My_session');

// Доступ к сессионному классу с помощью:

$ this-> my_session

Я думаю, это то, что вы ищете.

8 голосов
/ 20 октября 2011

Я знаю, что этот шаг давно пройден, но это был один из вопросов, с которыми я столкнулся, когда искал ответ. Итак, вот мое решение ...

Это 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, это делать вызовы статических функций, которые я кодирую.

5 голосов
/ 15 октября 2012

Извините за оживление этой темы, но я думаю, что могу добавить что-то разумное.

Вы можете сделать это, чтобы добавить несколько экземпляров класса. Я не знаю, нарушает ли оно стандартное использование 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

Я использую это в своем коде для создания различных меню. У меня есть класс «menu» и разные экземпляры для каждого меню, с разными пунктами меню в каждом.

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