Как правильно сгруппировать мои методы в одной модели?

Извините за название, может быть, я не смог бы описать это хорошо. Но вот что я хочу:

Теперь, если я создам модель 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"

Как мне этого добиться? Я хочу сделать это для того, чтобы сгруппировать методы, специфичные для чего-либо, это помогает мне лучше структурировать мой код.

** Я знаю, что можно создать новую модель для каждой группы методов, но я бы хотел, чтобы все, что связано с пользователем, было внутри одной модели **

Возможно ли это с помощью одной модели?

0

Решение

Я думаю, что вы хотите так

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";
}

}
1

Другие решения

Создайте функцию «Общая информация» и «Конфиденциальность», которые получают параметры.
позвони в контроллер.

$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

Понял. Я положил это внутри модели

public $info;
public function __construct()
{
parent::__construct();
$this->info = (object) array('foo' => 'bar', 'property' => 'value');
}

а потом просто:

echo $class->obj->foo;//outputs bar
0
По вопросам рекламы [email protected]