Как вызвать одну функцию контроллера в другом контроллере в codeigniter

У меня есть один контроллер с именем home.php в котором есть функция с именем podetails . Я хочу вызвать эту функцию в другом контроллере user.php .
Можно ли это сделать? Я прочитал о HMVC в CI, но я хочу знать, можно ли обойтись без использования hmvc?

Чтобы расширить контроллер, пожалуйста, следуйте этому руководству или см. Код ниже.


различия между частным / общественным / защищенным


создать файл в папке /application/core/ named MY_Controller.php

Внутри этого файла есть код

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Controller extends CI_Controller { protected $data = Array(); //protected variables goes here its declaration function __construct() { parent::__construct(); $this->output->enable_profiler(FALSE); // I keep this here so I dont have to manualy edit each controller to see profiler or not $this->load->model('some_model'); //this can be also done in autoload... //load helpers and everything here like form_helper etc } protected function protectedOne() { } public function publicOne() { } private function _privateOne() { } protected function render($view_file) { $this->load->view('header_view'); if ($this->_is_admin()) $this->load->view('admin_menu_view'); $this->load->view($view_file . '_view', $this->data); //note all my view files are named <name>_view.php $this->load->view('footer_view'); } private function _isAdmin() { return TRUE; } } 

и теперь в любом из ваших существующих контроллеров просто отредактируйте первую или вторую строку, где

 class <controller_name> extends MY_Controller { 

и все готово

также обратите внимание, что все ваши переменные, предназначенные для использования в представлении, находятся в этой переменной (array) $this->data

пример некоторого контроллера, который расширяется MY_Controller

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class About extends MY_Controller { public function __construct() { parent::__construct(); } public function index() { $this->data['today'] = date('Ym-d'); //in view it will be $today; $this->render('page/about_us'); //calling common function declared in MY_Controller } } 

напишите podetails () как функцию в вспомогательном файле.

затем загрузите этот помощник в обоих контроллерах.

в контроллере вы просто вызываете podetails ()

Предположим, что:

–controller 1–

 function podetails() { podetails(); // will call function in helper ; } 

–controller 2–

 function podetails() { podetails(); // will call function in helper ; }