2016-03-26 3 views
1

У меня есть две модели: models/Categories.php и models/backend/BE_categories.phpРасширение собственного класса в PHP CodeIgniter 3

Я хочу BE_categories класс для расширения категории, так как она имеет некоторые полезные функции, я могу использовать повторно:

categories.php

class Categories extends CI_Model 
{ 
... 

BE_categories.php

class Be_categories extends Categories 
{ 
... 

Но когда $this->load->model('models/be_categories') я получаю сообщение об ошибке: Не удается найти указанный класс: session.php пока он работает с exending CI_Model Что я сделал не так?

+0

использование BE_Categories как имя файла и имя класса, которое должно это сделать ... – Vickel

+0

@Vickel Очень красивое место, но это была опечатка в вопросе ..! Под редакцией –

ответ

1

У меня также был контроллер под названием Categories.php, с class Categories, в котором CI путался.

мне пришлось переименовать models/Categories.php в models/Categories_model.php, а в качестве имени класса.

Но также должен был включать в файл при расширении:

BE_categories_model.php

include('application/models/Categories_model.php'); 
class Be_categories_model extends Categories_model 
{ 
... 

Edit:

Благодаря комментатора, может быть лучше включить эту модель в config/autoload.php вместо использования функции include() PHP.

+0

Включить в Codeigniter? Это не должно быть так. Попробуйте добавить модели в приложение/config/autoload.php – cssBlaster21895

+0

@ cssBlaster21895 Согласен, что это не очень «CI», но если он добавлен в автозагрузку, он будет загружен для каждой страницы, добавляя лишние накладные расходы? –

+0

Это не остановит вас. Codeigniter не сильно нагружает ресурсы. В одном из последних автозагрузок моего проекта Ive добавила 9 библиотек, 2 помощника и 7 моделей, а использование памяти показало мне около 0,65 мб. Сравните это с установками wordpress. F.E. обычно серверный лимит составляет 128 МБ, 64 МБ, и Ive встретил советы Wordpress, чтобы изменить это внутри php.ini, если вы видите «белый экран смерти». Но это были старые времена, я не знаю, как выглядит ситуация в мире. – cssBlaster21895

1

Как раз моя догадка, вы загружаете библиотеку сеанса внутри некоторой функции в модели категорий, а затем пытаетесь использовать функцию со специальной функцией библиотеки сеансов внутри модели BE_Categories.

Добавить библиотеку сеансов в config/autoload.php или загрузить его внутри Категории конструктор моделей и не забудьте добавить конструктор внутри BE_Categories.

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