新手求助,如何动态调用Model?
本帖最后由 yayongm 于 2011-2-21 20:08 编辑折腾了一下午,没有搞定,请高手指点:
正常情况下,我们
$this->load->model('ModelA');
然后
$this->modela->MethodA();
可是我想动态调用,类似下面:
$this->load->model('ModelA');
装载后
$this->getModel('modela')->MethodA();
可是折腾一个下午无法实现,请高手帮助,谢谢. 本帖最后由 jeongee 于 2011-2-21 20:31 编辑
你非要这样的话,你就去扩展下CI_Controller吧
如:
MY_Controller extends CI_Controller
{
function __construct()
{
parent::__construct();
}
function getModel($model)
{
$this->load->model($model);
return &$this->$model;
}
}
本帖最后由 yayongm 于 2011-2-22 08:48 编辑
谢谢jeongee,貌似:
return &$this->$model;
这句话有错误,要声明$this->$model为类成员吗?还有
$this->load->model($model);
的返回值为void.
谢谢啦...
新手,首次接触CodeIgniter,请多多包涵.... 人工置顶吧.
其实这个问题可以简化为:根据类实例名称来调用类方法. 恩,昨天想用CI写一个动态扩展的小工具,也有这个需求,试了很多办法都失败,然后就Google到这里来了...
如果是java的话很容易实现,用反射就行了,php的反射也能这么用嘛? 回复 5# maboroshi
php有个特性叫变量的变量,然后这个就很容易实现了 啊,原来直接用名字就可以了orz
$fred = 'Test_model';
$this->$fred->info();
只试过2.0,之前的版本应该也可以... 回复 7# maboroshi
呵呵,是的,跟CI版本没关系,这个是PHP的特性 $name='jhon';
$$name='Rose';
等价于$jhon='Rose'; 感谢楼上各位高手解答,问题已解决,谢谢大家!
CI终于入门啦,哈哈哈.....
页:
[1]