Codeigniter -自动加载带有别名的模型


Codeigniter - autoloading models with aliases

当我在codeigniter中手动加载模型时,我可以指定如下别名:

$this->load->model("user_model","user"); //user is an alias to user_model
$this->user->getProfile(); //use the alias to refer to the actual model

其中一些模型在我的应用程序中被广泛使用,所以我决定使用autoload.php自动加载它们。我知道我可以加载它们,所以:

$autoload['model'] = array("user_model","another_model");

然而,它们都是通过别名来引用的。我想用现有的别名加载它们,这样当前的代码就不会受到干扰。

我想我可以在一个自动加载的帮助器中有一些这样的代码:

$ci= &get_instance();
$ci->user = $ci->user_model;

但我想检查的是,我可以加载模型与别名而自动加载?

是你可以创建相同的别名在自动加载通过作为一个数组尝试,但不可能只有别名,你可以创建相同的别名自动加载时间

$autoload['model'] = array(array('users_model', 'users'), array('an_model', 'an'), 'other_model');

$autoload['model'] = array(array('users_model', 'users', FALSE));  

更多信息:- https://github.com/EllisLab/CodeIgniter/issues/2117

http://ellislab.com/forums/viewthread/110977/560168

对于CodeIgniter 2。这在自动加载中是不可能的,但是可以通过扩展默认控制器来实现。在application/core目录中创建文件MY_Controller.php,代码如下:

<?php
class MY_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('Example_model', 'alias');
    }
}

当然,用合适的模型和所需的别名替换Example_modelalias

然后改变你的控制器扩展MY_Controller而不是CI_Controller。现在你可以在任何控制器中使用$this->alias->whatever()