将我的方法分组到一个模型中的正确方法是什么?
What is the right way to group my methods inside a single model?
对不起这个标题,可能我描述的不太好。但这是我想要的:
现在,如果我创建一个模型 m.php 并使用以下代码将其放入模型文件夹中:
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"
我怎样才能做到这一点?我想这样做是为了将特定于某些事物的方法组合在一起,这有助于我更好地构建代码。
**我知道可以为每组方法创建一个新模型,但我只想将与用户相关的所有内容都保留在一个模型中**
这甚至可以使用单个模型吗?
创建一个获取参数的函数 '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;
}
并处理视图中的输出。此示例将为您提供一个包含您请求的特定信息的字符串。或者所有通用数据的数组。
您将不得不关心这些不同的情况。例如,检查控制器中的 return。
但是通过这种方式,您还可以进行 ajax 调用,并将 return 转换为 JSON 并将其推送到模式或其他任何内容。
知道了。我把它放在模型里面
public $info;
public function __construct()
{
parent::__construct();
$this->info = (object) array('foo' => 'bar', 'property' => 'value');
}
然后简单地:
echo $class->obj->foo;//outputs bar
我想你想要这样
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";
}
}
对不起这个标题,可能我描述的不太好。但这是我想要的:
现在,如果我创建一个模型 m.php 并使用以下代码将其放入模型文件夹中:
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"
我怎样才能做到这一点?我想这样做是为了将特定于某些事物的方法组合在一起,这有助于我更好地构建代码。
**我知道可以为每组方法创建一个新模型,但我只想将与用户相关的所有内容都保留在一个模型中**
这甚至可以使用单个模型吗?
创建一个获取参数的函数 '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;
}
并处理视图中的输出。此示例将为您提供一个包含您请求的特定信息的字符串。或者所有通用数据的数组。 您将不得不关心这些不同的情况。例如,检查控制器中的 return。
但是通过这种方式,您还可以进行 ajax 调用,并将 return 转换为 JSON 并将其推送到模式或其他任何内容。
知道了。我把它放在模型里面
public $info;
public function __construct()
{
parent::__construct();
$this->info = (object) array('foo' => 'bar', 'property' => 'value');
}
然后简单地:
echo $class->obj->foo;//outputs bar
我想你想要这样
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";
}
}