Комментарии 22
Спасибо за подборку! Не понятно из поста, увидим ли мы атрибуты в 8.0?
0
Сейчас (PHP 8.0 <= beta3) можно использовать <<Attr>>
, дальше (PHP 8.0 >= RC1) будет синтаксис #[Attr]
.
P.S. https://externals.io/message/111630 (см. последний коммент)
+2
any() and all() — Наконец-то. А то
$satisfies_predicate = true;
break;
Прям какой-то goto. Да ещё и с бесполезной переменной.+4
мне кажется в посте неудачный пример, можно реализовать немного изящнее:
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;
}
+8
Всё же 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);
}
А кто не упарывался, тот и не будет использовать )
+5
Для тех кто под линой и докером, хочет без боли ввиде назначений айпи юзать дебаг, используйте такую точку входа контейнера
Точка работает для элпайновых образов, как обстоят дела у других не проверял
Код
#!/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 "$@"
Точка работает для элпайновых образов, как обстоят дела у других не проверял
+2
А простой «xdebug.remote_connect_back=On» случайно не эту же задачу решает?
0
Он частично решает и то с некоторыми оговорками, да и при cli режиме работать уже не будет
0
А вы не пробовали в xdebug.remote_host писать docker0 хоста? У меня всё отлично работает и не нужно извращаться.
+1
В каждой сети он разным может быть
+1
Наверное мы о разных вещах говорим, но допустим, я себе прописал в конфиг
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
0
Теперь вам надо добавить в заметку к проекту, чтоб в усех работал дебаг, сделайте то и то… Скрипт решает это всё автоматически при старте контейнера, есть еще вариант кроме фиксации айпи докера просто узнать его айпи и прописать в конфиге, но опять же это мартышкин труд)
0
С неподдельным интересом наблюдаю за этим полным драматизма тредом, пытаясь понять, что за хитрый use case решается то одним методом хитрых приседаний, то другим. Уже много лет как: на линухе — remote_connect_back = On, на маке — Off, но добавляем remote_host = docker.что-то.internal (вроде так, не помню). И всё работает! Естественно, эти специфичные для ОС вещи вытаскиваются на уровень env для Docker Compose, протягиваются на этап билдинга имиджей и на выходе получаем нужным образом сконфигурированный PHP с xdebug'ом. Нужно CLI? Ну запускайте CLI из шторма, указывая ему remote interpreter в нужном контейнере. Что я делаю не так всё это время?
+2
Эх, жаль уникальный Phalcon. Следующий будет чрезвычайно похож на Yii 3, судя по всему. Планы по срокам на него очень оптимистичные, учитывая что Phalcon на зефире будут поддерживать, а количество рук уменьшилось.
+4
Да Phalcon шустрая штука
0
Спасибо за отличную подборку. Время бы найти на все
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PHP-Дайджест № 187 (18 августа – 7 сентября 2020)