Ура! Релизнулся.
- Почитать про новые фичи можно на красивом лендинге.
- Посмотреть стрим по случаю релиза.
26 ноября 2021
Ура! Релизнулся.
20 февраля 2021
В PHP часто для обработки ошибки в функциях вроде dns_get_record()
используют оператор @
:
$result = @dns_get_record($hostname, DNS_A);
if (!$result) {
throw new \RuntimeException('Unable to get record.');
}
Проблем несколько:
@
не очень хорошо сказывается на производительностиЕсть способ лучше:
set_error_handler(
static function (int $errorNumber, string $errorString) use ($hostname): ?bool {
throw new \RuntimeException(
sprintf('Unable to get record: "%s". ', $hostname) . $errorString,
$errorNumber
);
}
);
$result = dns_get_record($hostname, DNS_A);
restore_error_handler();
17 февраля 2021
При попытке использования OpenSSL на некоторых системах возникает ошибка:
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Исправляется довольно просто:
openssl.cafile="/путь/до/cacert.pem"
.Так же точно исправляется ошибка "cURL error 60".
Вроде просто, но почему-то подавляющее большинство советов на эту тему, в том числе большинство ответов на StackOverflow, говорят "отключить проверку", что, конечно же, приводит к возможности атаки man in the middle.
30 ноября 2020
На днях релизнулся PHP 8. Он не так богат на полезные возможности, как PHP 7.0 или PHP 7.4, но определённо хорош как производительностью с новым JIT, так и тысячей приятных мелочей.
О новых возможностях коротко можно почитать на специальной странице, которую мы подготовили вместе Романом Пронским, JetBrains и сообществом.
В честь выхода мы провели стрим с участием двух видных разработчиков этого релиза: Дмитрия Стогова и Никиты Попова.
Запись можно посмотреть на YouTube.
По поводу стабильности могу сказать, что, определённо можно пробовать переводить на восьмёрку продакшн. Большинство серьёзных багов отловили в бетах. Yii 1, Yii 2 и Yii 3 к PHP 8 готовы.
24 октября 2020
Недавно у меня умер SSD и заставил настраивать заново всё окружение. Опробованные Linux по тем или иным причинам не зашли (но я ещё попробую, может пропустил что). Вернулся на Windows 10.
Для тестов фреймворка мне необходимы несколько версий PHP и в этот раз удалось сделать удобно. В Windows Terminal у меня теперь несколько профилей с git bash и в каждом отдельная версия PHP.
Делается так:
C:\php74
, C:\php80
.{ "guid": "{e084a08a-ad94-499d-9573-1d5904b4e9a0}", "name": "Git Bash with PHP 8", "suppressApplicationTitle": true, "icon" : "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico", "commandline": "cmd.exe /C \"SET PATH=%PATH%;C:\\php80\\&& \"%PROGRAMFILES%\\Git\\bin\\bash.exe\" -login -i -l\"", "startingDirectory": "D:\\src\\" }, { "guid": "{08a7817f-8812-4eb0-b4b7-a4939fc9d14a}", "name": "Git Bash with PHP 7", "suppressApplicationTitle": true, "icon" : "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico", "commandline": "cmd.exe /C \"SET PATH=%PATH%;C:\\php74\\&& \"%PROGRAMFILES%\\Git\\bin\\bash.exe\" -login -i -l\"", "startingDirectory": "D:\\src\\" }
25 августа 2020
15 августа записали видео где попытались разобраться, как пишут приложения на PHP и Go. Участники кроме меня:
5 августа 2020
Дружественные классы видят как минимум protected-методы друг друга. В PHP реализуются так:
abstract class Base { protected function doit() { throw new \RuntimeException('Not implemented'); } } class Closed extends Base { protected function doit() { echo 'done!'; } } class Opener extends Base { public function execute(Closed $closed) { $closed->doit(); } } $closed = new Closed(); $opener = new Opener(); $opener->execute($closed);
Здесь можно запустить. Если что, это не баг.
Как это использовать? В Yii 3 мы так закрываем DI-контейнер и диспетчер событий чтобы в рантайме они были только для чтения, но, при этом их можно было сконфигурировать специальными friendly-конфигураторами на этапе инициализации приложения.
Сделано это чтобы не дать стрелять себе в ногу, в этом плюс. Минус в том, что про такую фичу PHP мало кто знает и это вызывает вопросы:
14 июля 2020
iXBT опубликовали новость "Microsoft прекращает поддержку PHP в Windows".
Компания Microsoft объявила о том, что она собирается прекратить поддержку PHP в своей операционной системе Windows.
php.exe
это не влияет никак.10 июня 2020
Почти десять лет назад я писал про короткие теги и радовался включению короткого echo по умолчанию.
Сегодня меня спросили, что я думаю по поводу использования коротких тегов.
Их осталось на данный момент в PHP 7.4 два вида:
<?
- короткая форма <?php
. Включается через short_open_tag
в php.ini.<?=
- короткая форма <?php echo
. Доступна всегда.Если с <?=
всё ясно, тег доступен всегда и удобен при использовании в шаблонах, то с <?
не всё так просто.
В PHP 7.4 его хотели убрать и почти убрали после положительного голосования за RFC. Но в итоге сначала предложили сделать это по-другому, а потом и вовсе не делать.
В результате в PHP 7.4 теги работают как и ранее. В PHP 8 тоже (но не факт, что так будет в релизе).
Стоит ли использовать <?
- вопрос неоднозначный. Если у вас проект, который разворачивается только на ваши сервера, вы контролируете php.ini и никогда не забываете short_open_tag = On
, то технически ничего ужасного в использовании коротких тегов нет. Если же вы делаете продукт, который можно поставить на свой сервер, такой как CMS или фреймворк, то использовать <?
- плохая идея. Часть пользователей обязательно попробует развернуть ваш продукт в окружении, где у них нет возможности поправить php.ini.
8 июня 2020
8 июня 1995 года, программист родом из Гренландии Расмус Лердорф публикует в usenet анонс набора CGI-скриптов, который он назвал PHP Tools.
Иногда говорят, что первые версии PHP были написаны на Perl. Это, конечно же, неправда.
Главные факты и события из 25 лет истории PHP смотрите в таймлайне.
Заревьювить и дополнить его помогли непосредственные участники событий: Andi Gutmans, Derick Rethans, Peter Kokot, Александр Макаров, Дмитрий Стогов и другие.
Еще 27 мая исполнилось 10 лет PhpStorm. Чтоб отметить сразу два дня рождения делаем скидку 50% на персональную годовую подписку.
С днем рождения PHP!