Извините за титул, может быть, я не могу описать это хорошо. Но вот что я хочу:
Теперь, если я создаю модель 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"
Как я могу это достичь? Я хочу сделать это, чтобы сгруппировать методы, специфичные для чего-то все вместе, это помогает мне лучше структурировать код.
** Я знаю, что можно создать новую модель для каждой группы методов, но все, что я хотел бы сохранить все, что связано с пользователем внутри одной модели **
Возможно ли это с помощью одной модели?
Я думаю, что ты хочешь этого
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->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 и нажать его на модальный или любой другой.
Понял. Я положил это внутри модели
public $info;
public function __construct()
{
parent::__construct();
$this->info = (object) array('foo' => 'bar', 'property' => 'value');
}
а затем просто:
echo $class->obj->foo;//outputs bar