Codeigniter 3: как я могу избежать повторения этого фрагмента кода в моих контроллерах? - PullRequest
0 голосов
/ 07 апреля 2019

Я работаю над базовым приложением блога в Codeigniter 3.1.8 и Bootstrap 4.

Несколько элементов присутствуют в всех контроллерах (кроме Login.php и Register.php): статические данные, категории и страницы.

$data = $this->Static_model->get_static_data();
$data['pages'] = $this->Pages_model->get_pages();
$data['categories'] = $this->Categories_model->get_categories();

Более того, в большинстве контроллеров приведенный выше код появляется более одного раза.

Боюсь, это не единственный случай повторяющегося кода в приложении. (См. Все приложение в его текущем состоянии на моем аккаунте Github ).

Я ищу конкретные и / или общие советы от опытных разработчиков PHP, которые помогли бы мне уменьшить избыточность кода и сделать его более эффективным.

Каков наилучший способ избежать повторения кода выше в моих контроллерах?

1 Ответ

0 голосов
/ 07 апреля 2019

В CodeIgniter Вы можете создать основной контроллер по следующему пути:

application/core/MY_Controller.php

Затем вы можете использовать его для расширения ваших контроллеров, например:

class MY_Controller extends CI_Controller {
    public function __construct() {
         // your logic here
    }
}

class Pages extends MY_Controller {
    public function index() {
          // display all pages here
    }
}

Вам не нужно создавать конструктор в каждом создаваемом вами классе, если вам не нужно или не нужно что-то переопределять. И если вы хотите иметь глобальные данные, просто создайте защищенное свойство в вашем основном контроллере и используйте его в других классах

например:

// MY_Controller
protected $data;

public function __construct() {
    $this->data = $this->somemodel->get_static()
}

в ваших контроллерах вы можете сделать что-то вроде этого

public function index() {
   $this->data['pages'] = $this->pagesmodel->get_pages();
   $this->load->view('path/to/view', $this->data);
}

Контроллер ядра автоматически загружается, если он существует, просто создайте файл и начните его использовать.

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