我很抱歉这个头衔,也许我说不出来。但这就是我想要的:
现在,如果我创建一个模型 m.php 并将其放在models文件夹中,并使用以下代码:
class m extends CI_Model {
public function username() {
print "john doe";
}
public function password() {
print "ABC123";
}
}
现在,我可以在控制器中执行以下操作:
$this->load->model("m");
$this->m->username(); // prints john doe
$this->m->password(); // prints ABC123
现在我需要做的是以下面的方式调用上面的方法:
$this->m->genralinfo->username(); // prints john doe
$this->m->privacy->password(); // prints "ABC123"
我怎样才能做到这一点?我想这样做是为了将特定于某些东西的方法分组,这有助于我更好地构建我的代码。
**我知道可以为每组方法创建一个新模型,但我想在一个模型中保留与用户相关的所有内容**
使用单一型号甚至可以吗?
答案 0 :(得分:1)
创建一个函数'general-info'和'privacy'来获取参数。 在控制器中调用它。
$m->generalinfo('username');
在模型中
public function generalinfo($v='') {
switch($v){
case 'username':
$ret=$this->username; //you would have to fill the object first
break;
case 'name':
$ret=$this->name; //same here
break;
default:
$ret=Array();
$ret['username']=$ret=$this->username;
$ret['name']=$ret=$this->name;
}
return $ret;
}
并注意视图中的输出。此示例将为您提供包含您请求的特定信息的字符串。或者是所有通用数据的数组。 你将不得不关心这些不同的情况。例如,检查控制器中的返回值。
但是这样你也可以进行ajax调用,并将返回值转换为JSON并将其推送到模态或其他任何内容。
答案 1 :(得分:1)
我想你想要这样
class m extends CI_Model
{
public $genralinfo;
function __construct()
{
parent::__construct();
$this->genralinfo=new Genralinfo();
}
}
class Genralinfo
//class Genralinfo extends CI_Model//you may extend CI_MODEL too
{
public function username() {
print "john doe";
}
public function password() {
print "ABC123";
}
}
答案 2 :(得分:0)
知道了。我把它放在模型中
public $info;
public function __construct()
{
parent::__construct();
$this->info = (object) array('foo' => 'bar', 'property' => 'value');
}
然后简单地说:
echo $class->obj->foo;//outputs bar