Только что сидел и удивлялся отсутствию нормальных примеров реализации этого патерна. И вот попал на шутку об этом в Вашем видео ))) Очень благодарен за разбор!
если сервисы могут быть вызваны в разном порядке, то всё равно надо будет конфигурировать инстанс. вынести всё в отдельный файл init_log.php где создать объект и настроить его, а в других файлах делать require_once init_log.php ?
Заметил в методах которые возвращают объект, вы используете : self, где-то вычитал, для $this рекомендуется указывать возвращаемый тип : static глубоко не копал в чем разница, но видимо это пока просто рекомендация (для php8)
static используется вместо self если вы хотите воспользоваться "поздним статическим связыванием". Т.е. если мы используем static, то происходит создание экземпляра не родителя а дочернего класса, почитайте МэттЗандстра ООП, там это хорошо описано.
Ниче не понял. Изначально у тебя было два разных объекта логгера, с префиксом и без, с сохранением в файл и в лог. Как это решает твой синглтон ? Ты их тупо одинаковыми сделал. Не хочешь каждый раз создавать set-ы, сделай наиболее часто используемые данные по дефолту. Странный пример, короче. Лучше на примере подключения к БД показывать, типа один раз подключаемся к базе и все. Там уж точно ничего не меняется.
так после с инглтона у нас у всех получается одинаковый набор полей "дата, префикс и тд", а если нам это не надо то всеравно придется дублировать ведь? четь суть не дублируемости не показана
На такой синглтон (без финализации класса) есть Паблик Морозов. А конкретно ваш синглтон можно обойти даже не экстэндя, а просто через __sleep __wakeup. Лучше бы про нужду использования побольше рассказали и про спор паттерн это или антипаттерн.
Привет, можно обойти конечно, например еще можно через Reflection. но цель видео была продемонстрировать пример использования паттерна, показать как он упрощает код на конкретном примере, а не просто написать очередной класс, который есть во всех видео. Про антипаттерны спасибо за идею, записал.
@@backendtv1345 так вы весь класс логгера расписывали. Прям каждый метод логгера. Просто функционал логгера рассказываете. Причём аж с двумя видами логгирования даже. Лично я смотрел на x1.75 и успевал перематывать. А видео то про паттерн синглтон, а теперь вы говорите что детали паттерна синглтон в этом видео не важны? Так переименуйте в "Пишем логгер".
класс Логгера был описан, чтобы показать что мы имеем и что будет с использованием паттерна и без него. насчет финализации класса - принципы синглтона обязывают иметь всегда один объект одного класса, если вы от него наследуетесь - это другой класс. про wakeup - посмотрел сейчас примеры от других авторов, половина этот метод не закрывают. ну в теории можно бы закрыть, вы правы. но на цель видео это не влияет;)
"финализация класса", "обойти синглтон", "экстэндя", "__sleep __wakeup" - вот про всё это тоже можно пару слов? а то конечно прикольно ваш диалог посмотреть, но хотелось бы и хоть что-то понять :)
Вы, конечно, правы. Но и коллеги, Ваши, наверное, не партизаны и диверсанты. Странно ожидать, что кто-то увидев синглтон будет специально пытаться создать второй экземпляр.
Только что сидел и удивлялся отсутствию нормальных примеров реализации этого патерна. И вот попал на шутку об этом в Вашем видео ))) Очень благодарен за разбор!
Как раз погружаюсь в паттерны, продолжай пожалуйста)
Спасибо. Очень доступно и познавательно
Класс! Спасибо.
Очень доступно, спасибо большое!!!
если сервисы могут быть вызваны в разном порядке, то всё равно надо будет конфигурировать инстанс. вынести всё в отдельный файл init_log.php где создать объект и настроить его, а в других файлах делать require_once init_log.php ?
Спасибо! Доходчиво!
Заметил в методах которые возвращают объект, вы используете : self, где-то вычитал, для $this рекомендуется указывать возвращаемый тип : static глубоко не копал в чем разница, но видимо это пока просто рекомендация (для php8)
static используется вместо self если вы хотите воспользоваться "поздним статическим связыванием". Т.е. если мы используем static, то происходит создание экземпляра не родителя а дочернего класса, почитайте МэттЗандстра ООП, там это хорошо описано.
Ниче не понял. Изначально у тебя было два разных объекта логгера, с префиксом и без, с сохранением в файл и в лог. Как это решает твой синглтон ? Ты их тупо одинаковыми сделал. Не хочешь каждый раз создавать set-ы, сделай наиболее часто используемые данные по дефолту. Странный пример, короче. Лучше на примере подключения к БД показывать, типа один раз подключаемся к базе и все. Там уж точно ничего не меняется.
👍👍👍👍
спасибо, буду рад если видео вам помогло)
так после с инглтона у нас у всех получается одинаковый набор полей "дата, префикс и тд", а если нам это не надо то всеравно придется дублировать ведь? четь суть не дублируемости не показана
Что за музыка играет?
На такой синглтон (без финализации класса) есть Паблик Морозов. А конкретно ваш синглтон можно обойти даже не экстэндя, а просто через __sleep __wakeup. Лучше бы про нужду использования побольше рассказали и про спор паттерн это или антипаттерн.
Привет, можно обойти конечно, например еще можно через Reflection. но цель видео была продемонстрировать пример использования паттерна, показать как он упрощает код на конкретном примере, а не просто написать очередной класс, который есть во всех видео. Про антипаттерны спасибо за идею, записал.
@@backendtv1345 так вы весь класс логгера расписывали. Прям каждый метод логгера. Просто функционал логгера рассказываете. Причём аж с двумя видами логгирования даже. Лично я смотрел на x1.75 и успевал перематывать. А видео то про паттерн синглтон, а теперь вы говорите что детали паттерна синглтон в этом видео не важны? Так переименуйте в "Пишем логгер".
класс Логгера был описан, чтобы показать что мы имеем и что будет с использованием паттерна и без него. насчет финализации класса - принципы синглтона обязывают иметь всегда один объект одного класса, если вы от него наследуетесь - это другой класс. про wakeup - посмотрел сейчас примеры от других авторов, половина этот метод не закрывают. ну в теории можно бы закрыть, вы правы. но на цель видео это не влияет;)
"финализация класса", "обойти синглтон", "экстэндя", "__sleep __wakeup" - вот про всё это тоже можно пару слов? а то конечно прикольно ваш диалог посмотреть, но хотелось бы и хоть что-то понять :)
Вы, конечно, правы. Но и коллеги, Ваши, наверное, не партизаны и диверсанты. Странно ожидать, что кто-то увидев синглтон будет специально пытаться создать второй экземпляр.