Критика моей Codeigniter с пользовательской модели текстовых страницах


Я в настоящее время разработки пользовательских CMS строится на CodeIgniter и было интересно, если вы можете определить любые недостатки в моей странице получения кода модели. Загрузки страницы модели не совсем полная, но основные функции для получения страница сделана, а также при извлечении модулей на странице (модуль действительно просто виджет).

Может эта модель быть лучше в некоторых частях, возможно, по отношению к соединениям я делаю? хотя на самом деле не присоединяется, но несколько запросов, чтобы вытащить кусочки связанная информация страницы, такие как модули и СМИ.

<?php

  class Mpages extends CI_Model {

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

      public function fetch_page($page_slug = 'home') 
      {
          $db = $this->db;

          $query = 
            $db
               ->where('page_status', 1)
               ->where('page_slug', strtolower($page_slug))
               ->get('pages')
               ->result_array();

          $page_id = $query[0]['id'];

          $query['modules'] = 
            $db
                ->select('modules.module_name, modules.module_slug, modules.id moduleid')
                ->where('page_id', $page_id)
                ->join('pages_modules lpm', 'moduleid = lpm.module_id')
                ->order_by('module_order', 'asc')
                ->get('modules')
                ->result_array();

          /*$query['media'] = 
            $db
                ->select('lucifer_media.media_file_name, lucifer_media.media_file_extension, lucifer_media.media_directory')
                ->join('lucifer_pages_media', 'lucifer_pages_media.page_id = '.$page_id.'')
                ->get('lucifer_media')
                ->result_array();*/

          if ($query) {

            return $query;

          } else {
            return false;
          }
      }

      public function fetch_navigation()
      {
        $result = $this->db->order_by("nav_order", "asc")->where('published', 1)->get('navigation')->result_array();
        return $result;
      }

      public function fetch_layout($id)
      {

          $result = $this->db->where('id', $id)->get('layouts')->result_array();

          return $result[0];

      }

  }

?>


1409
6
задан 20 января 2011 в 12:01 Источник Поделиться
Комментарии
1 ответ

Я не знаю в CodeIgniter, поэтому я не могу прокомментировать "это модель Проппер". На мой ответ я собираюсь предположить, что это.

Это не много кода, поэтому я собираюсь сосредоточиться на некоторых деталях:


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

Эти 5 строк абсолютно ничего не делать. Я бы их убрать. Если вам нужно позже конструктор, добавьте его позже.


  public function fetch_navigation()
{
$result = $this->db->order_by("nav_order", "asc")->where('published', 1)->get('navigation')->result_array();
return $result;
}

Это довольно трудно читать (113 символов в этой строке). Я бы выбрал что-нибудь вроде этого (говорить с вашим форматирования сверху)

  public function fetch_navigation()
{
return $this->db
->order_by("nav_order", "asc")
->where('published', 1)
->get('navigation')
->result_array();
}


$db = $this->db;

Кажется, нет необходимости создавать локальную переменную, эти 6 дополнительных символов вообще не больно. Мне нужно посмотреть дважды, чтобы увидеть, где этой переменной, и если его местные, потому что были произведены изменения.


Пока это очень небольшие заметки.

Недостижимый код ?

if ($query) {
return $query;
} else {
return false;
}

вы задаете запрос$query['модули'] = ... так что даже если это-нуль $запрос будет содержать по крайней мере

array("modules" => null); 

и это всегда будет так.

4
ответ дан 20 января 2011 в 02:01 Источник Поделиться