Help us understand the problem. What is going on with this article?

PHP関連のアドベントカレンダーを持ち寄って紹介して話し合う【Web x PHP TechCafe 3杯目】

PHP × Web Tech Cafe

『Web×PHP TechCafe』は、WebやPHPに関わるITエンジニアがスキルアップのために開発や勉強、LTをするコミュニティです。オフィスをスキルアップの場としてご提供します。

本コミュニティは以下の2部構成になっています。

  1. Lightning Talks 発表
  2. ワーキングテーマに基づき参加者で議論

connpassのページはこちら

今回は PHP × Web Tech Cafe 1月の内容をまとめてお伝えします!!

1. Lightning Talks

Zvalについて

  • 下記のQiita記事作成中に、PHP.net に記載されていた内容が古いことが分かったので、zvalについて改めて調べてみた

  • PHP変数は「zval」というコンテナに保管される

    • PHPは参照されるたびに参照カウントがカウントアップされる
    • 0になったら解放される
  • PHP.net に記載されている内容が古い

    • $a = "new string"; の参照カウントを調べたらカウント数が表示されない(internedと表示)
    • PHP.net には refcount=1 になるとある
      • v5.6 では 1になる
      • v7.4 では internedと表示
      • phpが7系になったタイミングでパフォーマンス改善のためにzvalの構造が大きく変わったため
  • PHPコア開発者のNilitaさんのスライドを参照

    • 新しいzvalでは構造の見直しによってサイズが小さく、かつ効率よくメモリアクセスされるようになった
    • 数値型はrefcountなどで管理せず、代入されるたびに新しくメモリ領域が確保され、メモリアクセス回数が減った
    • 文字列は、3段階のアクセスを行っていたが2段階に減った、など
    • PHP7以降は、参照を使うとむしろ無駄なメモリ消費が発生する
    • メモリ領域にリファレンス情報を保持させなければならなくなったため

2. ワーキングテーマ

本日のテーマは以下です

PHP関連のアドベントカレンダーで気になった・面白い記事を持ち寄って、記事の紹介+その記事をネタに色々議論する

議論内容

1件目

phpenv/php-build の小ネタ集

内容

  • phpにもxxxenvがあるとは知らなかったが、この記事を見て初めて知ったので紹介

    • PHPのバージョンを切り替えるのを楽にするのが目的
    • nodenv, pyenvのPHP版
    • 使ってみたが、切り替えが簡単になるが各バージョンのPHPをインストールする際に苦労した
    • PHPのユーザーグループのslackでも最新バージョンのビルドが通らなくて苦労しているようだ
    • 個人開発する程度ならDockerでも代用可能
    • ただし、Dockerなどの仮想化技術を使わずにOSに直接インストールしたPHPを利用したい場合はphpenvが良さそう
  • 本番環境で7.4を利用しているとして、開発環境でphpenvで7.4 と 7.1 を併存するのは大丈夫なのか?

    • それは問題ないはず。内部的にはPHPのバイナリの参照先を変えているだけなので
  • それだと何が環境構築が難しいのか

    • PHPのバージョンに対応したライブラリを入れるのが大変
    • 結局バージョンに対応しているライブラリをすべて入れていかなければならず、OSのリポジトリが対応していない場合などもある
  • 逆にDockerだとどうやってやればいいのか

    • DockerHubから落としたいPHPのバージョンのイメージを落としてRunするだけ
    • DockerはDockerで知識が必要だし、本番運用するならそれなりの知識が必要

2件目

Laravel で Christmas Illumination

内容

  • Laravel にある Illuminate という名前空間をモチーフにしてイルミネーションを作ったという記事
    • センスが面白い
  • Laravel の作者が Illuminate で PHP界を明るくしたいという意図があったらしい
  • Laravel はナルニア国物語の国名が由来。テンプレートエンジンはBladeで、剣と魔法の世界。
    • artisan(職人)とか、ネーミングが素敵

3件目

【PHP7.4】PHP7.4がリリースされたので新機能全部やる

内容

  • 前回のWeb × PHP Tech Cafe でも PHP7.4 の新機能について話していた

  • その時には気づかなかったその機能の使い方について説明があり興味深かった

  • mb_str_split でZWJシーケンスも分割できるため👨‍👩‍👦‍👦の文字も分割して、「👨」「👩」「👦」「👦」のようにできる

余談

Laravelのここが便利

  • 認証処理
    • フレームワーク上で認証機能を作ってくれる
  • バリデーション
    • 画面のバリデーションチェックから項目値の挿入まですべてやってくれる
  • ルーティングのグルーピング
    • ルートをグルーピングしてmiddleware を一括で登録することができる
  • セッション管理
    • Flashセッションなど、手書きで実装しようとすると大変そうな機能が全てやってくれる
  • ルートモデルバインディング
    • コントローラ内の処理を実行するときにモデルを渡すことができる
  • マイグレーション
    • スキーマ管理しやすい
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした