PHP × Web Tech Cafe
『Web×PHP TechCafe』は、WebやPHPに関わるITエンジニアがスキルアップのために開発や勉強、LTをするコミュニティです。オフィスをスキルアップの場としてご提供します。
connpassのページはこちら
今回は PHP × Web Tech Cafe 12月の内容をまとめてお伝えします!!
今回のテーマ
PHP7.4の新機能をRFCを見ながら「何が嬉しいのか、どういう時に使うのか」などを参加者同士でお話しする。(パート2)
RFC
Migration
前回の模様
今日のディスカッション対象
Arrow functions
- アロー関数
- https://www.php.net/manual/en/migration74.new-features.php#migration74.new-features.core.arrow-functions
- https://wiki.php.net/rfc/arrow_functions_v2
場内意見
- 利用シーンとしては見た目がきれいになるという利点しかなさそう
- JavaScriptでは2016年から利用されている書き方なので見た目としてよく見かけるコード体系になった
- シンプルになったように思う反面、明示的にUSEを書いた方がわかりやすいんじゃないか
- 外側のスコープの値を使いたい場合はわかりずらいような気がする
- アロー関数はユーザ一覧の配列から別の属性の値を持つユーザだけを突き合わせていく処理では使えると思う
- JavaScriptではコールバックを使うことが多いので、他の言語の当たり前を取り入れていくのはいいかなと思う
Preload
- プリロード
- https://wiki.php.net/rfc/preload
- https://qiita.com/niisan-tokyo/items/ec4c918715d5ec754721
- 参考: PHP: OPcache - Manual
場内意見
- サーバを起動したときにopcodeをキャッシュする
- 修正していたと思ったらキャッシュされていなかった等ありそう
- 再起動してたらうまくいくと思っていたらうまくいかなかったなど、慣れるまでは原因の切り分けが難しい
- 考慮ポイントが増えてしまうんじゃ?
- DBのキャッシュなどでも問題になりやすいのでトラブルの原因を増やしてしまいそう
- 変化に対応しづらそう
- JavaエンジニアとしてはPHPはファイルを差し替えるだけで動くから楽にできていいと思ってたがキャッシュ前提になるとPHPである意味とは・・・?
- 手軽さも残しつつケースバイケースで使えるようになれればいいかも
- 立ち上げに時間がかかりそう
- そこの影響を知りたい
- 必要な時だけ作っていらなくなったら捨てる、というシステムだと足を引っ張りそう
- 賛成多数の機能なのでこの機能を待っていた人は多いのではないか
- PHP8でJITが実装されたらもっと早くなりそう
Limited return type covariance and argument type contravariance
- 共変戻り値と反変パラメータ
- https://www.php.net/manual/en/migration74.new-features.php#migration74.new-features.core.type-variance
- https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters
場内意見
- 継承しているクラスのオーバーライドしているメソッドで戻り値の型を変えることができる
- 反対する人がいないから可決されたんじゃないか
- 他の言語でできることをPHPでもできるようにするというモチベーションで追加された機能なんじゃないか
mb_str_split
- str_splitのマルチバイト対応版
- https://www.php.net/manual/en/migration74.new-features.php#migration74.new-features.mbstring
- https://wiki.php.net/rfc/mb_str_split
場内意見
- マルチバイト文字を特定の文字数で区切って配列に出力できる
- ファイル操作などで使えそうか
- そもそも分割したいというシーンに出くわさないような仕様的にしているケースが多いと思うので正直いらないかも
Allow exceptions from __toString
- __toStringが例外を投げられるようになった
- https://www.php.net/manual/en/migration74.new-features.php#migration74.new-features.core.tostring-exceptions
- https://wiki.php.net/rfc/tostring_exceptions
場内意見
- __toString内でExceptionを発生させることができる
- これまでできなかった理由はかなり複雑な背景があったそうな
- __toStringはログを出力する際によく使う
Unpacking inside arrays
- 配列内で別の配列をアンパックできるようになる
- https://www.php.net/manual/en/migration74.new-features.php#migration74.new-features.core.unpack-inside-array
- https://wiki.php.net/rfc/spread_operator_for_array
場内意見
- 配列の途中に配列を連結させることができる
- 人間にやさしい書き方になる
- CSVなど最初にヘッダ情報を書き、データを連結させるなどの方法で使えそう