- 39
- 422 419
Backend TV
Russia
เข้าร่วมเมื่อ 23 เม.ย. 2015
Видеоуроки по программированию
Паттерн Адаптер на реальном примере в PHP
#php #designpatterns #programming #программирование #itubeteam
Разбираем паттерн Adapter усложняем программу, видим как он помогает избавиться от дублирования кода. Сравниваем что было, если бы не использовали адаптер. В конце смотрим UML-схему.
Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
Разбираем паттерн Adapter усложняем программу, видим как он помогает избавиться от дублирования кода. Сравниваем что было, если бы не использовали адаптер. В конце смотрим UML-схему.
Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
มุมมอง: 4 316
วีดีโอ
Паттерн Строитель на примере проектирования БИГ МАКА
มุมมอง 2.4K2 ปีที่แล้ว
#php #designpatterns #programming #программирование Аналогия о том как лучше понять паттерн Строитель. Не забудьте налить колы =) Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
Паттерн Абстрактная фабрика на реальном пример в PHP
มุมมอง 4.4K2 ปีที่แล้ว
#SoerAward #php #designpatterns #programming #программирование Рассказываю как с помощью паттерна абстрактная фабрика упростить код. Старался не пересказать википедию, а показать пример с пользой от использования паттерна. Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
Паттерн Фабрика на реальном примере в PHP
มุมมอง 10K2 ปีที่แล้ว
#php #designpatterns #programming #программирование Рассказываю как с помощью фабрики избежать дублирования кода. Старался не пересказать википедию, а показать пример с пользой от использования паттерна. Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
Паттерн Singleton на реальном примере в PHP
มุมมอง 4.6K2 ปีที่แล้ว
#php #designpatterns #programming #программирование Разбираем паттерн Singleton с использованием в реальном коде. Старался не пересказать википедию, а показать пример с пользой от использования паттерна. Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
Установка composer на MacOS
มุมมอง 1.9K2 ปีที่แล้ว
За минуту рассказываю как установить composer на MacOS Поддержать автора 👨💻 : Тинькофф www.tinkoff.ru/rm/sardyko.ivan2/DxuTY29617 Сбер 4274 3200 7445 1066 ссылка на скрипт: drive.google.com/file/d/10KvhvxA5rIDiF9JIWhtxa7Jzt1Iid11X/view?usp=sharing Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html
Уроки PHP 8 - типы данных: Boolean
มุมมอง 5043 ปีที่แล้ว
Продолжаем курс по PHP 8. Начинаем разбирать типы данных, в этом уроке затронем логический тип boolean. Для чего нужен, рассматриваем преобразование типов, ну и в конце задачка для тебя, зритель! пиши в комменты по задачке или просто так, комментом или лайком ты поможешь продвинуть видео чуть выше чем оно могло быть без тебя =) Друзья, я решил немного сменить формат, приглашаю на новый канал th...
Уроки PHP 8 - Выражения и операторы
มุมมอง 4213 ปีที่แล้ว
Продолжаем курс по PHP 8. Разбираем как строятся выражения, какие бывают операторы, отличие простых выражений от составных. Рассмотрим что такое идентификаторы и литералы, какие бывают виды операторов, а также побочные эффекты выражений. Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html #курсы php #php learn #tutorial 00:00 - Привет...
Уроки PHP 8 - Инструкции
มุมมอง 6873 ปีที่แล้ว
Продолжаем изучение PHP 8. Что такое инструкция в php? почему это важно понимать? Готовим окружение к запуску файлов. Смотрим онлайн-песочницу php sandbox. точка с запятой в php, сокращенные встраиваемые блоки php c директивой short_open_tag. Это продолжение серии курсов по PHP8, второй урок "инструкции" Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V...
Уроки PHP 8 - Вводный урок
มุมมอง 1.6K3 ปีที่แล้ว
Начинаем изучение PHP 8. Зачем нужен язык, где и как применяется, с какими базами данных работает. Что поддерживает. Чем отличается php от javascript, разница между клиентом и сервером. Это вводный урок по PHP8 Друзья, я решил немного сменить формат, приглашаю на новый канал th-cam.com/channels/xZuK_V-Jtgvxi_JDB6hojQ.html #курсы php #php learn #tutorial 00:00 - Приветствие 00:08 - Что такое PHP...
Установка и запуск Laravel без Apache и Nginx
มุมมอง 8544 ปีที่แล้ว
Установка и запуск Laravel без Apache и Nginx
Laravel + Docker. (Nginx + Fpm + Mysql) Подробный разбор
มุมมอง 39K5 ปีที่แล้ว
Laravel Docker. (Nginx Fpm Mysql) Подробный разбор
Wordpress - обзор бесплатного плагина Book Showcase
มุมมอง 1.1K5 ปีที่แล้ว
Wordpress - обзор бесплатного плагина Book Showcase
Какой язык программирования выбрать в 2019 году?
มุมมอง 1.7K5 ปีที่แล้ว
Какой язык программирования выбрать в 2019 году?
Решаем задачку на CODEWARS, используем функции str_split, str_repeat
มุมมอง 2K5 ปีที่แล้ว
Решаем задачку на CODEWARS, используем функции str_split, str_repeat
Cравнение фреймворков Laravel и symfony на конец 2018 года
มุมมอง 5K5 ปีที่แล้ว
Cравнение фреймворков Laravel и symfony на конец 2018 года
Установка COMPOSER на Windows за минуту
มุมมอง 43K6 ปีที่แล้ว
Установка COMPOSER на Windows за минуту
SSH-доступ без логина и пароля (по ключу шифрования)
มุมมอง 20K6 ปีที่แล้ว
SSH-доступ без логина и пароля (по ключу шифрования)
Курс по Laravel#01 - route, blade extends
มุมมอง 1.7K6 ปีที่แล้ว
Курс по Laravel#01 - route, blade extends
PHP простые примеры с числами, строками, var_dump, in array
มุมมอง 2.5K6 ปีที่แล้ว
PHP простые примеры с числами, строками, var_dump, in array
Наследование, инкапсуляция, полиморфизм в PHP
มุมมอง 2.5K7 ปีที่แล้ว
Наследование, инкапсуляция, полиморфизм в PHP
отключение обновлений в windows 10 навсегда
มุมมอง 3.9K7 ปีที่แล้ว
отключение обновлений в windows 10 навсегда
спасибо и удачи
Не работает
А как вы думаете, стоит ли добавлять путь к папке в переменные среды системы вручную или лучше использовать сторонние утилиты? лично я долго выбирал курсы по IT, рассматривал разные компании, но в итоге остановился на Skypro, и это помогло мне найти первого заказчика))
Имхо достаточно неудачный пример для демонстрации паттерна, да и основной его смысл явно не озвучен, а точнее акцент смещен на избавлении от if/switch, хотя паттерн не про это. Суть же в чем - что бы передать обязанность создания конкретного объекта дочернему классу, через создание этого самого фабричного метода с возвратом понятного интерфейса, что бы в суперклассе можно было работать зная лишь интерфейс будущего объекта. Если относительно примера из видео. В классе (абстрактном) в котором заводим фабричный метод хорошо бы как минимум для наглядности иметь и другие методы, которые будут работать с будущим объектом, произведенным в конкретной реализации. //* ФАБРИЧНЫЙ МЕТОД *// //Интерфейс для возврата из фабричного метода interface PaymentServiceInterface { public function getFee(): int; public function pay(int $sum): bool; } //Класс, объект которого вернет фабричный метод конкретного подкласса class VtbPaymentService implements PaymentServiceInterface { public function getFee(): int { return 0; } public function pay(int $sum): bool { $sumTotal = $sum + $this->getFee(); return "VTB: Payed {$sumTotal}"; } } //Класс в котором использован фабричный метод abstract class Payment { private $service; /** * @param $service */ public function __construct() { // !!! ПОЛЕЧАЕМ ОБЪЕКТ ИЗ РЕАЛИЗАЦИИ ФАБРИЧНОГО МЕТОДА !!! $this->service = $this->getService(); } //Тот самый ФАБРИЧНЫЙ МЕТОД, через интерфейс которого мы можем работать в этом классе, не имея его конкретной реализации abstract protected function getService(): PaymentServiceInterface; //Рабочий метод, в котором используются будущий объект от фабричного метода public function payOrder(array $order): array { $orderSum = $order['sum']; $paymentServiceFee = $this->service->getFee(); $payed = $this->service->pay($orderSum); return [ 'payed' => $payed, 'sum' => $orderSum, 'paymentServiceFee' => $paymentServiceFee, ]; } } //Конкретный класс в котором мы реализуем фабричный метод и отдаем ожидаемый объект с которым работают методы суперкласса class VtbPayment extends Payment { public function getService(): PaymentServiceInterface { return new VtbPaymentService(); } } //Sber или Nal или любой другой класс реализующий PaymentServiceInterface //Как именно будет выбираться конкретный класс в данном случае не имеет значения $paymentService = new VtbPayment(); $order = [ 'sum' => 1000 ]; $paymentService->payOrder($order); //* /ФАБРИЧНЫЙ МЕТОД *//
хорошо кэп)
МАНУАЛ ПОЛНАЯ НЕ РАБОЧАЯ ХУЕТА!!!!
Мне кажется либо правила open closed нарушена либо паттерн неправильно реализована
Спасибо за ролик! Объясните пожалуйста чем в этой задаче Билдер отличается от паттерна Декоратор? Вроде такой же принцип
как ты схему включил в ide? на 8:40)))
Дружище, огромное тебе спасибо) я чуть до ручки не дошёл при поиске годного видоса. Незаслуженно мало лайков!
Не находит файл... Какая может быть причина? С диска скачивал и удалял, все равно не находит mac@MacBook-Pro ~ % chmod +x composer-install-macos.sh chmod: composer-install-macos.sh: No such file or directory
Идеально было бы, если бы не было никаких if и case. Например подгружался бы объект, который был выбран при оплате. А так, всеми этими case, получается тот же if, только в другом виде. Таки образом, не надо править код, если потребуется добавить или удалить способ оплаты.
это можно сделать, например, если мнемоника типа явно коррелирует с именем класса, например "sber" -> SberPayment, либо где-то хранить таблицу соответствия
Огромное спасибо, 6 лет видео, а выручает и сегодня, пожал бы руку тебе, жаль экран мешает)
Раньше это называлось оберткой.
спасибо вам учителем надо быть
если $reportData = null will be Error
Лев! На макос 11 через brew не установилось, а тут вот так просто. Спасибо)
Так в классе PaymentHelper опять же куча ветвлений. В чём тогда вообще смысл? Мы всё равно не избавились от ветвлений, а только заменили if else на switch
не работает, в консоли всё равно пишет "php" не является...
Спасибо, не работает
у меня нет подходящих матов чтобы выразить свою благодарность!
Спасибо. Чёткое быстрое решение проблемы без воды. То, что надо. Все бы так делали.
Полная херня. Класс А создают только долбоебы.
если сервисы могут быть вызваны в разном порядке, то всё равно надо будет конфигурировать инстанс. вынести всё в отдельный файл init_log.php где создать объект и настроить его, а в других файлах делать require_once init_log.php ?
Спасибо коллега. Все работает.
Очень полезное видео. Спасибки❤
не до конца все рассказал, а именно, отключение доступа по паролю, иначе какой смысл. Хотелось бы узнать
OpenSSH отключить доступ по паролю
Я тут не вижу логику. Мы IF заменили на switch. И плодим не IF, а плодим case. В одном файле плодили IF, - сделали фабрику и в другом файле плодим case. И в чем прикол? оО?
Спасибо от души)
И вам спасибо! Пока сложно со временем, ролики планирую записывать по мере его появления)
Смотря на схему получается что мы добавляем сущности и расширяем систему, но в классе где описан switch мы изменям. А если избавится от точки изменения? допустим сделать более динамический способ создания сущности и добавлении оплаты в фабрику?
Привет, пробую поднять тестовый веб на win server 2016 (на виртуалке Hyper-V), ставил всё из архива, чтоб не собирать по кусочкам файлы, да и актуальность не так важна. Апач поднялся. Открываю в браузере localhost, папка test есть, а вот содержимое (index.php) не отображает вообще. В сервисах апач и SQL запущены, в логах ошибок нет. Как быть?
от души, брат
Четко, быстро, без воды. Поставил бы 10 лайков, если возможно
выдает сообщение об ошибке. Делал все по инструкции
спасибо! хоть один нормальный человек объяснил!
в чем проблема просто сделать один класс или функцию payment, в которую передавать вместе с заказом параметр например paymentType и внутри по этой развилке через if/case производить нужные действия? это же элементарная логика. я понимаю зачем можно разнести каждый тип оплаты в отдельный класс, но зачем городить еще интерфейс, хелпер и называть это "паттерн фабрика" - не понимаю.
Я обязательно напишу с чем я не согласен, когда пойму с чем, именно, я не согласен:)
А что со звуком? Ты нормальный?
php не является внутренней или внешней командой исполняемой программой или пакетным файлом.Я все добавил в path , все равно не работает
Thanks a lot!
супер, спасибо большое!!!
Спасибо! помогли
почему ты выбрал thread safe версию?
Выручил! Спасибо большое!
а зачем ставить composer в свою систему, когда у тебя уже установлен docker?
6:02 renderView можно было сделать стабильным и передавать туда массив по старинке, а getData выполнить до его вызова
Класс! Спасибо.
Ниче не понял. Изначально у тебя было два разных объекта логгера, с префиксом и без, с сохранением в файл и в лог. Как это решает твой синглтон ? Ты их тупо одинаковыми сделал. Не хочешь каждый раз создавать set-ы, сделай наиболее часто используемые данные по дефолту. Странный пример, короче. Лучше на примере подключения к БД показывать, типа один раз подключаемся к базе и все. Там уж точно ничего не меняется.
aaaaa,aaaaaaa,aaaaa,aaaaa,aaaaaa,AAA