В настоящее время у меня есть класс с именем user, который я хочу создать с разными переменными, но я думаю, что я делаю это неправильно.
В настоящее время у меня есть класс "Unit" с этими двумя функциями
public function __construct($table, $id) {
require_once('database.php');
require_once('app.php');
require_once("postmark.php");
$this->table = $table;
$this->valid = true;
if(!$id) {
$this->valid = false;
}
$this->populate($id);
}
public function populate($id) {
$db = new DB();
$q = $db->where('id', $id)->get($this->table);
$resp = $q->fetchAll();
foreach ($resp as $row) {
foreach ($row as $key=>$value) {
if(!is_int($key))
$this->$key = html_entity_decode($value, ENT_QUOTES);
if(is_null($value)) {
$this->$key = null;
}
}
}
if(count($resp) <= 0) $this->valid = false;
$verdict = !$db->error;
$db = null;
unset($db);
return $verdict;
}
А потом мой класс "Пользователь" расширяет его, как это так
public function __construct($id, $hash = null, $verify = null, $api = null) {
if($api)
$value = $this->apiToId($api);
else if($verify)
$value = $this->verifyToId($verify);
else if($hash)
$value = $this->hashToId($hash);
else
$value = $id;
parent::__construct("users", $value);
}
Но я не могу не думать, что это плохо с дизайном. Несколько вещей, которые я видел в прошлом, это использование амперсандов, возможно, сделав так, чтобы я мог сделать
$user = new User()->fromId($id);
Или
$user = new User()->withHash($hash);
Вместо того, чтобы передавать длинный список пустых параметров. Это или я мог бы улучшить способ наследования. Хотя мне нравится думать, что я знаю, что я делаю с PHP, мне бы очень хотелось помочь в правильном направлении. Документы PHP настолько громоздки, что мне никогда некуда смотреть, но я всегда нахожу классные полезные инструменты. Мне интересно, как я могу улучшить это для большей гибкости и структуры.