class SelectedModel extends CI_Model {
var $title = 'SelectedModel';
var $content = 'get top n articles';
var $date = '23.2.2011';
function __construct()
{
parent::__construct();
}
function getTopArticles()
{
$result = $this->db->query('select top 5 article from articles;');
if( ! $result->num_rows() > 0 )
die('There are no articles in db.');
return $result;
}
}
class Front extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->database();
$this->load->helper(array('text', 'html'));
$this->load->model('SelectedModel');
// controller process data and validate it
$top_articles = $this->SelectedModel->getTopArticles();
foreach($top_articles->result() as $item)
{
$item->desc = character_limiter($item->desc, 75);
if( strlen($item->image) == 0 )
$item->desc = '/images/default.png';
}
$data['title'] = 'title';
$data['random_articles'] = $top_articles;
$this->load->view('front', $data);
}
}
Вид спереди:
php foreach($random_articles->result() as $item):
php echo $item->desc
php echo br() . $item->image
php endforeach;
Мне интересно, правильны ли мои знания о MVC. В контроллере я обрабатываю данные, подготавливаю их к отображению. В виду, есть место только для html / css кода и echo $ var.
Модельная функция - получение данных.
Существуют ли другие подходы к обработке данных. Мой путь в порядке?
Вопрос оптимизации:
$ top_articles = $ this-> SelectedModel-> getTopArticles ();
Я не знаю точно, как php управляет этой линией. Я просто спрашиваю, является ли $ top_articles копией getTopArticles, поэтому я использую вдвое больше памяти, если бы использовал на мой взгляд:
Вид спереди:
php foreach($random_articles->result() as $item):
php echo character_limiter($item->desc, 75)
php echo br() . if( strlen($item->image) == 0 ) echo images/default.png''; else echo $item->image;
php endforeach;
Но при таком подходе я не использую MVC (используя character_limit, .... в поле зрения).