【PHP8.1リリース記念】PHPerのためのPHP8.1をもっと語り合うPHP TechCafe - HackMD (original) (raw)

【PHP8.1リリース記念】PHPerのためのPHP8.1をもっと語り合うPHP TechCafe ===================================================== # PHPers News ::: info **[PHP8のモダンな書き方チートシートがgithabにあるの見つけたで、 というITコンサルしている海外の人のツイート](https://twitter.com/afilina/status/1462904647933382656?s=21)\*\* ・モダンを知ることでレガシーを知れる ::: ::: info **[The New Life of PHP – The PHP Foundation](https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/\_)\*\* ・もっとPHPの言語内でパラダイム・シフトが活発になりそう ・レガシーシステムを作っている会社はDOKIDOKI★HETOHETOが待っていそう★★ ::: ::: info **[2021 アドベントカレンダー Laravel](https://qiita.com/advent-calendar/2021/laravel)\*\* 著名なエンジニアによる記事が満載。Laravel の最新情報などもそろっている雰囲気です ::: ::: info **[JetBrainsがコードエディタの「Fleet」を発表](https://blog.jetbrains.com/ja/blog/2021/11/29/welcome-to-fleet/)\*\* PHPは実装予定。単純に使ってみたいです。 ::: ::: info **[Appleシリコン対応Docker Desktop、一般提供を開始](https://codezine.jp/article/detail/15238)\*\* M1 Mac不具合が解決していけば最新Mac買いたい。 まだIntel Macの信用度は高い。 ::: ::: info **[Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ](https://qiita.com/rana\_kualu/items/eaf97694f25a62f93a7e)\*\* PHP開発の主要人物って2人だけなんだぁ…… ::: ::: info **[PHP: PHP 8.1.0 Release Announcement](https://www.php.net/releases/8.1/en.php)\*\* 新機能については、うちのTechBlogでもまとめられています ::: ::: info **[PHPerKaigi petit - PHP8.1リリース祝賀会](https://phperkaigi.connpass.com/event/233022/)\*\* 参加者のアイコンが見たことあるアイコンばかり… ::: ::: info **[「動的プロパティの禁止」が僅差で可決](https://externals.io/message/116519)\*\* ライブラリやら諸々取り込むのは大変そう ちなみに投票数の2/3が賛成で可決です ::: ::: info **[PHPerKaigi petit - PHP8.1リリース祝賀会](https://phperkaigi.connpass.com/event/233022//)\*\* ::: # 特集:PHP8.1をもっと語り合う ## [PHP8.1リリース前のPHP TechCafe](https://rakus.connpass.com/event/221434/) * Show Note * [PHP8.1 の新機能について語り合う PHP TechCafe](https://hackmd.io/71nKKcp6SduhpI0hD-Ac6A) * イベントの書き起こし * [PHP8.1 の新機能について語り合う・前編【PHP TechCafe イベントレポート】](https://tech-blog.rakus.co.jp/entry/20210915/php) * [PHP8.1 の新機能について語り合う・後編【PHP TechCafe イベントレポート】](https://tech-blog.rakus.co.jp/entry/20210927/php) ## [メイン機能](https://www.php.net/releases/8.1/en.php) * Readonly Properties * 使いやすそう * この値は変更してほしくないという意図をのちの開発者に伝えられる * ただし、型つきプロパティのみに対応 * New never type * 可読性向上が期待できる(レガシーなコードにバンバンつけていきたい) * 加納はやっぱり"noreturn"のほうがよかったのでは派 * Final class constants * 継承したclassの定数をオーバーライドすることを禁止することが出来る * 意図しない変更を防止することができる ## [非推奨になる機能](https://www.php.net/manual/ja/migration81.deprecated.php) * date_sunrise() and date_sunset() * 日の出、日の入の時刻を返す関数。 * そんな関数があったのかという意味で気になった。 * 他にも面白い関数がありそう(PHP8.1の話題とはそれるが) * key(), current(), next(), prev(), reset() on objects * そもそもobjectをforeachしたことがなかったので気になった。 * object内の、アクセス権限があるプロパティにのみforeachでアクセスできる模様。 * 今後はobjectを配列にキャストするか、get_mangled_object_vars()を使用することになる。 * https://www.php.net/manual/ja/language.oop5.iterations.php * get_class(), get_parent_class() and get_called_class() without argument * 却下されたRFC。 * 影響が大きいため却下された? * 今回は却下されたが、将来非推奨になりそうな気はする。 * t fopen mode * 却下されたRFC。 * 影響が大きいため却下された? * 今回は却下されたが、将来非推奨になりそうな気はする。 * filter.default ini setting * GET,_GET, GET,_POST, COOKIE,_COOKIE, COOKIE,_REQUEST および $_SERVER のすべてのデータをフィルタリングできる。 * フィルタもいくつかあって、なんか色々できそう。 * が、デフォルトの設定(unsafe_raw)以外は非推奨になる模様。 * https://www.php.net/manual/ja/filter.filters.sanitize.php * 暗黙の float から int への変換 * 型を意識債PHPを感じる * false な変数を自動的に復活させる挙動(Autovivification) * なんだかんだやってしまっていること多くない?? ## [下位互換性のない変更点](https://www.php.net/manual/ja/migration81.incompatible.php) * 継承したメソッド内で static 変数を使う * 内部クラスと戻り値の型の互換性 * リソースからオブジェクトへの移行 ここら辺はシステムによっては影響が結構ありそう。 申込時に`さっそくapacheにphp8.1インストールしたら500でまくりでした`というメッセージもいただいておりました。 ## その他の話題 * Nikita Popov について語る * https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md * https://blog.jetbrains.com/phpstorm/2019/01/nikita-popov-joins-phpstorm-team/