разделение метода большого контроллера на файлы - PullRequest
0 голосов
/ 13 декабря 2011

мой код далек от СУХОГО и требует рефакторинга, но на данный момент мне нужно разбить его на файлы - у меня есть метод контроллера на 300 строк, который выполняет много API-функций при вызове, и я просто хочу поместить некоторый код в другой файл, чтобы я мог прочитать его немного лучше, не переходя и не переписывая его.

if($type == "like"){

    $this->load->helper('posts/likes');

}else{

    $this->load->helper('posts/pic');

}

Я попробовал описанный выше метод, но он воспринимается как нормальный (вы поверите) -

В основном я хочу скопировать и вставить код в другой файл, чтобы немного его очистить, но новый файл должен быть просто расширением текущего метода. я не знаю, что использовать PHP-функции (require_once или аналогичные) .. Может ли CI этого не делать?

для уточнения

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

Ответ на мой вопрос о том, как загружать файлы, публикуя информацию о методах класса DRY, не помог мне в моей ситуации - код должен быть очищен, подвергнут рефакторингу и отсортирован в библиотеку, я знаю это, но мне нужно временное исправление

мой ответ

Исправление состояло в том, чтобы объединить код в подпапку в каталоге контроллера для моего контроллера сообщений. Я поместил два файла в подпапку сообщений, затем использовал require_once, что сработало, но я подумал, что ci может что-то сделать для загрузки блоков кода.

1 Ответ

0 голосов
/ 13 декабря 2011

Общее правило - держать контроллер в тонком состоянии.
СУХОЙ - это вещь, к которой нужно отнестись серьезно и получить ее.

Обычно я подготавливаю контроллер для вызова метода одной модели,
и этот метод модели подготовит и вернет все необходимые данные в правильном формате обратно в метод контроллера

так, вы можете избежать зацикливания результата в контроллере

$result = $this->some_source->get_comments($limit=30);
// I don't do loop in controller
$this->load->view("display", $result);

class some_source extends xxx
{
  function get_comments(...)
  {
    // get results
    // loop
    // do necessary massage / format
    // and return
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...