Comments 22
Спасибо за подборку! Не понятно из поста, увидим ли мы атрибуты в 8.0?
Сейчас (PHP 8.0 <= beta3) можно использовать <<Attr>>
, дальше (PHP 8.0 >= RC1) будет синтаксис #[Attr]
.
P.S. https://externals.io/message/111630 (см. последний коммент)
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);
}
А кто не упарывался, тот и не будет использовать )
Для тех кто под линой и докером, хочет без боли ввиде назначений айпи юзать дебаг, используйте такую точку входа контейнера
Точка работает для элпайновых образов, как обстоят дела у других не проверял
Код
#!/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
Теперь у меня всегда ip бриджа одинаковый и во всех контейнерах просто пишу xdebug.remote_host=170.0.0.1. Я не очень разбираюсь в сетях, могу что-то путать. Xdebug работает отлично для fpm & cli
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 в нужном контейнере. Что я делаю не так всё это время?
Эх, жаль уникальный Phalcon. Следующий будет чрезвычайно похож на Yii 3, судя по всему. Планы по срокам на него очень оптимистичные, учитывая что Phalcon на зефире будут поддерживать, а количество рук уменьшилось.
Да Phalcon шустрая штука
Спасибо за отличную подборку. Время бы найти на все
Sign up to leave a comment.
PHP-Дайджест № 187 (18 августа – 7 сентября 2020)