2009-03-28 2 views

ответ

14

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

CI Users Guide: Loader Class

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

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

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

класс // Session теперь доступен с помощью:

$ this-> my_session

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

+3

Я уверен, что он имеет значение: $ one = new Class; $ two = новый класс ('but_different'); – Garrett

+0

Очень полезно-спасибо! – mpemburn

8

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

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

+1

не работает. Вы не можете определить paramater в конструкции, а затем загрузить такую ​​библиотеку и инициировать экземпляр в CI. он выдает ошибку, так как он ожидает, что вы загрузите ее так: $ this-> load-> library ('My_class', $ given_number) – mixix

+0

Могу ли я спросить, как вернуть экземпляр обратно, чтобы сохранить его в массиве например? [внутри контроллера] $ this-> someclass; дает текущий экземпляр каждый раз? Причина: Я сделал следующее с разными параметрами $ params для каждого, но в результате я получил первый объект, а не два: $ this-> load-> library ('SomeClass', $ params); print_r ($ this-> someclass); $ this-> load-> library ('SomeClass', $ params); print_r ($ this-> someclass); – limitcracker

4

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

Вы можете сделать это, чтобы добавить несколько экземпляров класса. Я не знаю, нарушает ли это стандартное использование codeigniter в любом случае, но выглядит скорее как codeigniter-ish, чем загрузка библиотеки (которая создает $ this-> имя_библиотеки, которая не используется), а затем делает 2 MORE экземпляра с «новым» ключевым словом.

$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 

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

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

  • Нет связанных вопросов^_^