Как стать автором
Обновить

Комментарии 22

Спасибо за подборку! Не понятно из поста, увидим ли мы атрибуты в 8.0?
any() and all() — Наконец-то. А то
$satisfies_predicate = true;
break;
Прям какой-то goto. Да ещё и с бесполезной переменной.

мне кажется в посте неудачный пример, можно реализовать немного изящнее:


    private function any(array $array, callable $fn): bool
    {
        foreach ($array as $item) {
            if ($fn($item)) {
                return true;
            }
        }

        return false;
    }

    private function all(array $array, callable $fn): bool
    {
        foreach ($array as $item) {
            if (!$fn($item)) {
                return false;
            }
        }

        return true;
    }

Всё же foreach приводить как альтернативу all/any не очень корректно, когда array_reduce/filter в PHP3 ещё были, если не раньше. Кто по функциональщине хоть чуть-чуть упарывался через них реализовывал, банально что-то вроде


function array_any(iterable $input, callable $callback)
{
  return count(array_filter($input, $callback)) > 0;
}

function array_all(iterable $input, callable $callback)
{
  return count(array_filter($input, $callback)) === count($input);
}

А кто не упарывался, тот и не будет использовать )

В этой реализации нет досрочного выхода и она будет запускать callback на всю коллекцию даже если после первого элемента можно было вернуть результат, так что реализация из поста выглядит более корректной.

ФП подход в PHP не для скорости используют.

Для тех кто под линой и докером, хочет без боли ввиде назначений айпи юзать дебаг, используйте такую точку входа контейнера
Код
#!/bin/sh
set -e

HOST_DOMAIN="host.docker.internal"
if ! ping -q -c1 $HOST_DOMAIN > /dev/null 2>&1
then
    HOST_IP=$(ip route | awk 'NR==1 {print $3}')
    # shellcheck disable=SC2039
    echo -e "$HOST_IP\t$HOST_DOMAIN" >> /etc/hosts
fi

# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
    set -- php-fpm "$@"
fi

exec "$@"


Точка работает для элпайновых образов, как обстоят дела у других не проверял
А простой «xdebug.remote_connect_back=On» случайно не эту же задачу решает?
Он частично решает и то с некоторыми оговорками, да и при cli режиме работать уже не будет
А вы не пробовали в xdebug.remote_host писать docker0 хоста? У меня всё отлично работает и не нужно извращаться.
Наверное мы о разных вещах говорим, но допустим, я себе прописал в конфиг
docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
{
  "bip": "170.0.0.1/16"
}

Теперь у меня всегда ip бриджа одинаковый и во всех контейнерах просто пишу xdebug.remote_host=170.0.0.1. Я не очень разбираюсь в сетях, могу что-то путать. Xdebug работает отлично для fpm & cli
Теперь вам надо добавить в заметку к проекту, чтоб в усех работал дебаг, сделайте то и то… Скрипт решает это всё автоматически при старте контейнера, есть еще вариант кроме фиксации айпи докера просто узнать его айпи и прописать в конфиге, но опять же это мартышкин труд)
С неподдельным интересом наблюдаю за этим полным драматизма тредом, пытаясь понять, что за хитрый use case решается то одним методом хитрых приседаний, то другим. Уже много лет как: на линухе — remote_connect_back = On, на маке — Off, но добавляем remote_host = docker.что-то.internal (вроде так, не помню). И всё работает! Естественно, эти специфичные для ОС вещи вытаскиваются на уровень env для Docker Compose, протягиваются на этап билдинга имиджей и на выходе получаем нужным образом сконфигурированный PHP с xdebug'ом. Нужно CLI? Ну запускайте CLI из шторма, указывая ему remote interpreter в нужном контейнере. Что я делаю не так всё это время?
> remote_host = docker.что-то.internal (вроде так, не помню)
docker.for.mac.localhost

Эх, жаль уникальный Phalcon. Следующий будет чрезвычайно похож на Yii 3, судя по всему. Планы по срокам на него очень оптимистичные, учитывая что Phalcon на зефире будут поддерживать, а количество рук уменьшилось.

Да Phalcon шустрая штука
НЛО прилетело и опубликовало эту надпись здесь

Во времена PHP5 весьма можно было некоторые задачи ускорить малой кровью.

Да и сейчас Phalcon — один из немногих, предоставляющих скелет для разработки, а не набор для быстрого разворачивания хоть чего-нибудь «мы решили, что вам так будет лучше всего»
Спасибо за отличную подборку. Время бы найти на все
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории