Рефакторинг для подключения нескольких провайдеров геоданных. Усовершенствование алгоритма выбора.
- 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 должен быть таким вроде:
Или войти через: