Извините за название, может быть, я не смог бы описать это хорошо. Но вот что я хочу:
Теперь, если я создам модель 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