Чат Telegram
Группа ВКонтакте
Новый комментарий

ArtemijeKA 29.10.2018 в 06:26

У меня на главной показывает count 3, а на любом из постов cout 2.

ivashkevich 30.10.2018 в 08:32

Включи xdebug и поставь брейкпоинт на строке, где происходит увеличение счетчика. Узнаешь, почему так.

ArtemijeKA 29.10.2018 в 06:49

Когда мы пишем self::$instance = new self();
self() - мы подразумеваем, __construct данного класса?

ivashkevich 30.10.2018 в 08:31

Да, self - это тот класс, в котором этот self написан. А static - это класс, в котором этот static прямо сейчас выполняется.

<?php

class A 
{
    public function foo(): string 
    {
        return self::class;
    }

    public function bar(): string 
    {
        return static::class;
    }
}

class B extends A
{
}

$b = new B();

var_dump($b->foo()); // A
var_dump($b->bar()); // B
virtual2018 03.01.2019 в 12:17

В уроке "Класс для работы с базой данных" настройки находятся в src/settings.php, в этом уроке они в
src/MyProject/Services/settings.php

ArsGuy 30.01.2019 в 22:07
private function __construct()
    {
        $dbOptions = (require __DIR__ . '/../settings.php')['db'];

        $this->pdo = new \PDO(
            'mysql:host=' . $dbOptions['host'] . ';dbname=' . $dbOptions['dbname'],
            $dbOptions['user'],
            $dbOptions['password']
        );
        $this->pdo->exec('SET NAMES UTF8');
    }

В коде src/MyProject/Services/Db.php последнем у меня выдавало ошибку, что settings.php не найден.
поменял на

$dbOptions = (require DIR . '/../../settings.php')['db'];

и все заработало. Так что там ошибка (если я ничего не перепутал).

babls2332@gmail.com 29.05.2019 в 19:50

Всегда ли стоит использовать данный паттерн, если в коде нужно постоянно открывать несколько соединений в разных местах? Или есть альтернативы?

ivashkevich 30.05.2019 в 08:19

Есть альтернативы, причем более правильные. Service locator, fabric, dependency injection - почитай про эти паттерны. Синглтон это самое простое, что может быть использовано для такого случая.

ashfedor 16.06.2019 в 19:29

А в каком уроке мы создавали класс ActiveRecordEntity от которого наследуем. Вроде иду по шагам и по очереди, не пропускаю.

ivashkevich 17.06.2019 в 09:59

Это точно было раньше. Поищи сам)

ashfedor 17.06.2019 в 12:38

Точно есть в 19-ом , пока боролся с одной проблемой пропустил другую))

iluha22 30.10.2019 в 08:38

Классика жанра ))

andreskrip 30.01.2020 в 23:03

Спасибо за урок! С каждым последующим всё интереснее :)
Прочитал на хабре статью, что помимо "приватизации" конструктора еще необходимо закрыть магические методы clone(), sleep(), __wakeup(). Насколько это важно?

ivashkevich 31.01.2020 в 13:24

Ну это уже защита от самого себя)

OneMoreTime 08.03.2020 в 16:35

То ли дело в том, что этот шаблон на самом деле очень простой, и соответственно урок показался простым, то ли есть результаты в прокачивании серого вещества... Поменял подход к обучению)) Теперь перед уроком стараюсь использовать дополнительные материалы. Предварительно почитав про этот паттерн в разных источниках, получилось самостоятельно и достаточно быстро сделать все то, что дано в уроке - не читая его. Вобщем, предварительно изучая материал по теме урока, осознание решения приходит само, по крайней мере пока относительно текущего учебного "проекта". Может это и мнимое ощущение, но значительно улучшает освоение вопроса. Получается заметно медленнее в целом, но лучше запоминается и здорово мотивирует.

ivashkevich 09.03.2020 в 08:20

Отлично! На данном этапе уже можно и даже нужно использовать несколько источников =) Учиться по одному источнику я рекомендую только самым-самым начинающим, это позволяет им не создавать кашу в голове.

studentDev 05.05.2020 в 06:37

И правда лёгкий паттерн)

ivashkevich 06.05.2020 в 13:42

Ну так, вы думали шучу что ли)

Логические задачи с собеседований