Воспламенитель кода: поставить отдельные контроллеры или один? - PullRequest
0 голосов
/ 06 мая 2011

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

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

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

Поскольку Codeigniter настолько условен, это приводит к таким вопросам, как этот.

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

Просто потому, что что-то не является " неправильным ", не делает это лучшим .

Только вы можете принять решение в конце концов, потому что именно вы будете поддерживать его.

3 голосов
/ 06 мая 2011

Полностью согласен с ответом Йондавиджона . Я предлагаю просто делать то, что работает для вас на данный момент, и не слишком беспокоиться о накладных расходах или делать «правильные» вещи. Вскоре вы поймете, что вам нужно делать и как организовать, и что касается накладных расходов - Codeigniter довольно скудный, не беспокойтесь об оптимизации на данном этапе - просто заставьте все работать так, как вы хотите.

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

Чтобы ответить на ваш буквальный вопрос: нет, нет ничего плохого в загрузке модели для каждого метода. На самом деле, это может быть «лучше», чем загрузка в __construct вашего контроллера, потому что он гарантирует, что вы загружаете только то, что вам нужно. Так что не беспокойся об этом.

Пока что я создаю один контроллер для раздела сайта с методом для каждой страницы - большинство из них являются статическими страницами

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

class Pages extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
    }

    function index($page)
    {
        $this->load->view("pages/$page");
    }

}

// config/routes.php
$route['page/(:any)'] = 'pages/index/$1';

Это отобразит URL /page/my_first_page на контроллер страницы и вызовет index() с аргументом my_first_page. Затем вы можете использовать это для всех ваших статических страниц без динамических данных. Вы можете пойти еще дальше, но это пример одной из опций, которую вы можете выбрать, чтобы не писать новый метод для каждой статической страницы.

0 голосов
/ 17 мая 2013

хорошо использовать определенный контроллер для каждой страницы, так что приложение становится легковесным, а также необходимо создать его по модели Поэтому приложение расширяет свои функциональные возможности, его становится легко разрабатывать:

     class Location extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->library('session');
    }
public function index()
{
$data['title'] = "Hello world";
$this->load->view('locale_view', $data);        
}
    }
0 голосов
/ 06 мая 2011

Вы можете загрузить модель для каждого метода. Это не плохая практика.

$this->load->model('your_model');

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

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