abstract class AppController extends Controller
{
protected $session_uid;
private $mObj;
public function __construct($route)
{
parent::__construct($route);
$this->session_uid = $_SESSION['uid'] ?? null;
$this->mObj = new App($this->session_uid);
if ($this->checkAuth()) {
$this->layout = 'auth';
// тут какие-то методы ВНОСЯЩИЕ ИЗМЕНЕНИЯ в таблицу users
} else {
$this->layout = 'noauth';
}
}
private function checkAuth()
{
if (isset($this->session_uid)) {
if (is_object($this->mObj->user)) {
return true;
}
session_unset();
}
return false;
}
}
class App extends Model
{
public $user;
public function __construct($session_uid)
{
parent::__construct();
$this->user = $this->getUser($session_uid);
}
private function getUser($id)
{
return $this->pdo('select * from users where id = ? limit 1', [
$id
])->fetch();
}
}
class StartController extends AppController
{
private $mObj;
public function __construct($route)
{
parent::__construct($route);
$this->mObj = new Start($this->session_uid);
// $this->mObj->user тут уже берём переопределённую?
}
}
class Start extends App
{
public function __construct($session_uid)
{
parent::__construct($session_uid);
// $this->user тут уже будет переопределено с учётом изменений?
}
}
Вопрос в классе StartController и соответственно в классе Start.
Дебаг запросов для описанного кода.Array
(
[0] => select * from users where id = ? limit 1
[1] => select * from users where id = ? limit 1
)
Второй запрос в данном случае - это переопределение или просто дубль?