Вот что я решил сделать, пожалуйста, прокомментируйте, если у вас есть совет:
Я расширил класс загрузчика CI:
<?php
class SSR_Loader extends CI_Loader
{
function __construct()
{
parent::__construct ();
}
/**
* Model Retriever
*
* Written by handerson@executiveboard.com to create and return a model instead of putting it into global $this
*
* Based on original 2.0.2 CI_Loader::model ()
*
*/
function get_model($model)
{
if (empty ($model))
{
return;
}
$name = basename ($model);
if (!in_array($name, $this->_ci_models, TRUE))
{
$this->model ($model);
}
$name = ucfirst($name);
return new $name ();
}
}
Видят ли какие-либо гуру CI проблемус этим, прежде чем я потрачу немного времени на изменение своего кода, чтобы принять возвращаемый объект, ала:
// in a controller:
public function test ($user_id=null)
{
$this->_logged_in_user = $this->load->get_model ('/db/users');
$this->_viewed_user = $this->load->get_model ('/db/users');
$this->_logged_in_user->load($this->session->userdata ('user.id'));
$this->_viewed_user->load($user_id);
}
Я мог бы также сделать private $_logged_in_user
, чтобы сделать его доступным в контроллере, но принудительно ограничить егопросто текущий контроллер и ни разу не пролить, или я мог бы просто сделать $_logged_in_user = $this->load->get_model ('/db/users');
и ограничить его только текущим методом, что, вероятно, я буду делать чаще.
Это выглядит как довольнопростой способ «исправить» эту проблему (я говорю «исправить», потому что это на самом деле не ошибка, а просто способ делать то, что я считаю плохой идеей).Кто-нибудь видит какие-либо недостатки?