Я хочу реализовать реальный шаблон MVC для моих контроллеров php. В частности, я хочу разделить Model и API путем создания Java-эквивалента «bean» в PHP (объекты, созданные для организации бизнеса) и API, использующего эти бизнес-объекты.
Например, мой основной объект - член.
Вопрос: где я запрашиваю свою базу данных?
Запрашиваю ли я все свойства членов прямо в __construct, и я просто получаю к ним доступ через геттеры ИЛИ я ничего не делаю в __construct и вызываю базу данных в каждой функции получения?
Люди говорят мне, что 1-е решение лучше, хотя, если я хочу, чтобы в моем контроллере была только конкретная информация, я создам элемент со всей информацией, вычисляемой непосредственно при конструировании (плохое управление памятью). Во втором случае, если я хочу, чтобы у нескольких участников были свойства, я сделаю несколько запросов SQL, что увеличит время выполнения моего сервера.
1-й раствор:
public function __construct($ID_membre,$sql)
{
$this->ID_membre = $ID_membre;
$res = mysql_get("select * from membres where ID_membre = $ID_membre",$sql);
if(!$res)
throw new Exceptions\MyDefaultException("no member for this Id");
$this->firstName = $res['first_name'];
$this->lastName = $res['last_name'];
$this->mail = $res['mail'];
$this->gender = $res['gender'];
// ....
$this->sql = $sql;
}
public function getLastName()
{
return $this->lastName;
}
public function getMail()
{
return $this->mail;
}
public function getGender()
{
return $this->gender;
}
// ....
2-е решение:
public function __construct($ID_membre,$sql)
{
$this->ID_membre = $ID_membre;
$res = mysql_get("select count(*) from membres where ID = $ID_membre",$sql);
if($res == 0)
throw new Exceptions\MyDefaultException("no member with this id");
$this->sql = $sql;
}
public function getLastName()
{
mysql_get("select name from members where ID = {$this->id}",$this->sql);
return $this->lastName;
}
public function getMail()
{
mysql_get("select mail from members where ID = {$this->id}",$this->sql);
return $this->mail;
}
public function getGender()
{
mysql_get("select gender from members where ID = {$this->id}",$this->sql);
return $this->gender;
}
В этом контексте старый добрый пользовательский запрос SQL в контроллерах идеален для того, чтобы не тратить время и память, потому что они обычаи. Так почему же такой запрос сегодня так плохо просматривается? И если крупные организации, такие как Fb или Google, делают MVC с базой данных, как им удается не тратить время и память при разделении модели и контроллеров?