У меня есть CodeIgniter искра определения & самозарядный класс libraries/Nci_nicecontroller.php
:нагрузки расширенный контроллер от CI искры
class Nci_nicecontroller extends CI_Controller {
//...
}
//autoloaded using $autoload['libraries'][]='nci_nicecontroller';
теперь я хочу использовать Nci_nicecontroller
в контроллере моего приложения, например:
class Welcome extends Nci_nicecontroller {
//...
}
//autoloaded using $autoload['sparks'][]='nci-extensions/0.0.4';
очевидно, Я не могу просто $this->load->spark
в конструкторе моего контроллера, потому что это требуется для расширения класса.
Если вы не используете искры, я просто поместил Nci_nicecontroller в core/MY_Controller.php
, но с искрами это не сработает.
Я пробовал автозагрузку искры в моем приложении, которое не сработало.
Тогда я попробовал:
get_instance()->load->spark('nci-extensions/0.0.4');
в заголовке controllers/welcome.php
, что дает мне следующие ошибки:
Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/welcome.php
Line Number: 2
--and--
Fatal error: Call to a member function spark() on a non-object in
C:\xampp\htdocs\CodeIgniter_demo\application\controllers\welcome.php on line 2
что мне делать?
что бы показать мне, если моя искра загружается вообще, но не решает мою проблему (нагружает искру до моего контроллера инстанциирован, поэтому контроллер может быть определено как «extends NCI ...»), или я чего-то не хватает? – nonchip
, если вам нужно загрузить свою искру до запуска контроллера, вы можете использовать автозагрузку. Просто добавьте в application/config/autoload.php следующую строку: $ autoload ['sparks'] = array ('nci-extensions/0.0.4'); После этого вы будете доступны как $ this-> nci_extensions-> do_something(); – ToxaBes
Я пробовал это раньше, не будет работать, так как весь класс Loader запускается в CI_Controller в первый раз. быстрый и грязный хак: '$ load = & load_class ('Loader', 'core'); @ $ load-> initialize(); 'в заголовке моего контроллера. – nonchip