@bedolazhka

Будет ли переопределено свойство?

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
)

Второй запрос в данном случае - это переопределение или просто дубль?
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы