Подключение нескольких провайдеров

Рефакторинг для подключения нескольких провайдеров геоданных. Усовершенствование алгоритма выбора.

Скрытый контент
Комментарии (6)
rodigy
2019-11-06 20:24

Доброго времени суток. Такой вопрос не по теме, популярно и обосновано ли использование монад в php, пока не очень понимаю преимущества, повсеместно используются только исключения.

Ответить
Дмитрий Елисеев
2019-12-06 10:10

Это больше используется в функциональных языках. Их использование в PHP пока не популярно.

Ответить
Дмитрий
2020-04-03 21:58

тест из видео не работает │ 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

Ответить
Дмитрий Елисеев
2020-04-05 07:41

Поменяйте на new Location('Exptected', null, null)

Ответить
uhamurad
2020-04-12 05:18

Дмитрий, как вам такая идея: дополнить класс Location методом getPrecision(), который будет возвращать точность данных объекта локации - 3, если известен город; 2, если известны только регион и страна; 1, если известна только страна? Тогда реализацию метода ChainLocator::locate() можно упростить.

Ответить
Дмитрий Елисеев
2020-04-18 15:17

Да, можно инкапсулировать точность в Location:

class Location
{
    ...

    public function getPrecision(): int
    {
        if (empty($this->city)) {
            return 3;
        }
        if (empty($this->region)) {
            return 2;
        }
        if (empty($this->country)) {
            return 1;
        }
        return 0;
    }
}

Это будет удобно в ChainLocator, но не будет использоваться в других.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий