Рефакторинг для подключения нескольких провайдеров геоданных. Усовершенствование алгоритма выбора.
- 00:00:13 Постановка задачи
- 00:00:51 Классы для разных сервисов
- 00:01:59 Общий интерфейс
- 00:02:59 Работа с несколькими реализациями
- 00:04:02 Композитный объект
- 00:05:05 Тестирование цепочки
- 00:06:16 Реализация ChainLocator
- 00:07:44 Выбор наиболее точной позиции
- 00:10:33 Какие получились классы
- 00:12:45 Проблема ошибок сервисов
- 00:14:23 Последующие улучшения
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Доброго времени суток. Такой вопрос не по теме, популярно и обосновано ли использование монад в php, пока не очень понимаю преимущества, повсеместно используются только исключения.
Это больше используется в функциональных языках. Их использование в PHP пока не популярно.
тест из видео не работает
│ ArgumentCountError: Too few arguments to function GEO\Location::__construct(), 1 passed in \tests\ChainLocatorTest.php on line 20 and exactly 3 expected │ │ \src\Location.php:13 │ \tests\ChainLocatorTest.php:20
Поменяйте на
new Location('Exptected', null, null)
Дмитрий, как вам такая идея: дополнить класс
Location
методомgetPrecision()
, который будет возвращать точность данных объекта локации - 3, если известен город; 2, если известны только регион и страна; 1, если известна только страна? Тогда реализацию методаChainLocator::locate()
можно упростить.Да, можно инкапсулировать точность в Location:
Это будет удобно в ChainLocator, но не будет использоваться в других.
Лучшее изучение патернов, это полезный пример. Спасибо.
Здравствуйте. Не могу найти код данного урока в репозитории deworker pro Не выкладывали данный урок в репозиторий github?
К этим скринкастам препозитория нет.
В ChainLocator::locate() последний блок if должен быть таким вроде:
Или войти через: