«У меня вопрос о наилучшем способе обработки свойств класса.Лучшая практика с классами
Для удобства объяснения, скажем, у меня есть класс, называемый компанией. «Компания» имеет отдельные свойства, такие как «имя», «адрес» и т. Д. Помимо этих отдельных свойств «Компания» также имеет несколько сотрудников, несколько офисов, & несколько кофейных машин. (Плохой пример, но лучшее, что я мог придумать).
При инициализации класса я могу запустить SQL-запрос в методе конструктора, чтобы получить имя, адрес и т. Д. Однако, поскольку «Сотрудники», «Офисы» и «Кофе-машины» хранятся в отдельных таблицах базы данных, и возвращать несколько результатов, чтобы сразу установить эти свойства, мне понадобится запустить еще три SQL-запроса.
Это лучший способ, или лучше всего создать три метода «getEmployees», «getOffices» & «getCoffeeMachines» и запустить запросы при необходимости?
Не уверен, что это ясно или нет. Вот два примера. Является ли это лучше всего сделать это, тем самым вызывая четыре запроса SQL на инициализации так вся информация мгновенно доступны:
Class Company
{
private $name;
private $address;
private $employees;
private $offices;
private $coffeeMachines;
public function __construct()
{
$this->employees = array();
$this->offices = array();
$this->coffeeMachines = array();
... SQL to get name and address ...
$this->name = $rs['name'];
$this->address = $rs['address'];
... SQL to get employees ...
while ($rs = mysql_fetch_array)
{
$this->employees[$rs['id']] = $rs['name'];
}
... SQL to get offices ...
while ($rs = mysql_fetch_array)
{
$this->offices[$rs['id']] = $rs['office'];
}
... SQL to get coffee machines ...
while ($rs = mysql_fetch_array)
{
$this->coffeeMachines[$rs['id']] = $rs['coffeeMachine'];
}
}
}
Или это лучше всего сделать это, только запустить один SQL запрос на инициализацию и запускать будущие запросы при необходимости
Class Company
{
private $name;
private $address;
private $employees;
private $offices;
private $coffeeMachines;
public function __construct()
{
... SQL to get name and address ...
$this->name = $rs['name'];
$this->address = $rs['address'];
}
public function getEmployees()
{
... SQL to get employees ...
while ($rs = mysql_fetch_array)
{
$this->employees[$rs['id']] = $rs['name'];
}
}
public function getOffices()
{
... SQL to get offices ...
while ($rs = mysql_fetch_array)
{
$this->offices[$rs['id']] = $rs['office'];
}
}
public function getCoffeeMachines()
{
... SQL to get coffee machines ...
while ($rs = mysql_fetch_array)
{
$this->coffeeMachines[$rs['id']] = $rs['coffeeMachine'];
}
}
}
Для чего это стоит, я подозреваю последнее, но могу использовать другие мнения.
Благодаря