Нет необходимости расширять класс / библиотеку в codeigniter - PullRequest
0 голосов
/ 21 октября 2009

Я хотел бы проверить, верно ли мое предположение о codeigniter?

Обычно мы расширяем класс, когда пытаемся включить больше функций в ядро, например, MY_Controller расширяет контроллер, MY_Model расширяет модель и т. Д ...

Но, например, если мы в библиотеке оформления заказа извлекаем некоторую информацию о проверке (например, product_id), мы можем просто $this->load->library('product_lib',array('product_id'=>$product_id)), и мы можем легко $ this-> product_lib-> product_name etc ... из библиотеки извлечения право

Элемент $this->load является своего рода эквивалентом библиотеки извлечения «жесткого кода» для расширения product_lib (класс checkout_lib extends product_lib), чтобы иметь возможность использовать любые методы / переменные, которые есть в product_lib.

Пожалуйста, просветите меня.

Ответы [ 2 ]

0 голосов
/ 13 января 2010

Я думаю, вы неправильно поняли парадигму ОО и то, как работает КИ.

$this->load - то же самое с созданием экземпляра объекта библиотеки / модели или загрузкой вспомогательного файла. У меня есть какое-то управление, чтобы увидеть, загружен ли уже помощник / библиотека / модель.

С другой стороны, extends используется при определении класса, чтобы сообщить PHP, что класс будет наследовать свойства и метод родительского класса. Класс - это синяя печать объекта, который он будет производить.

Возможно, вы можете начать с понимания концепции ОО. Вы можете прочитать это в качестве начала и посмотреть используемую там ссылку.

0 голосов
/ 21 октября 2009

В CodeIgniter $this->load похоже на наличие менеджера ресурсов (например, resourceManager-> load ("путь / к / файлу")), и он заботится о загрузке библиотеки и передаче любых аргументов, которые вы укажете, и тому подобное, легко позволяя чтобы быстро приступить к его использованию.

Так что, если у вас есть переменная с именем product_name в вашем product_lib, то да, вызов $this->product_lib->product_name будет обращаться к этой переменной.

На самом деле он просто помещает библиотеку в массив с именем библиотеки в качестве ключа и экземпляром библиотеки в качестве значения, поэтому вызов $this->product_lib действительно вызывает что-то похожее на $loadedLibraries['product_lib'] и возвращает экземпляр.

Я надеюсь, что ответит на то, что вы спрашиваете, я очень устал и, возможно, не понял вашего вопроса.

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