ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

「PHPコアから読み解くPHP5.5」を聞いてきた!

きのう(10/11)、PHP Conference 2014に行ってきて、聞いて聞いた内容をメモメモ

次は

PHPコアから読み解くPHP5.5

5.5以上使っている人→いっぱい
PHPコア知ってる人→少数
Zend エンジン使っている人→いっぱい??(・・・コア知らないのに・・・)

・PHPコア
 PHPの内部システムでC言語で記述されている
 この内部にある言語エンジンがzendエンジン
 Zendエンジン:字句解析、構文解析(ばいそん)→オペコード

 zend_なんとか・・
 PHP_なんとか

 PHPコアを知れば、良いコード

・PHP5.5の主な新機能
  ジェネレーターの追加
  boolvalの追加
  zend_execute()オーバーライド不可

・ジェネレータ
 yield(いーるど)使っている人は?
 →イテレーターを実装
 イテレーターはデータの要素にアクセスするための仕組み
   Cのポインタもそう

 例:3つのファイルにそれぞれ別の処理を行う
  yieldを使わない
   ファイルをオープンして1行筒読み込みファイルクローズを
   みんなする
  yieldを使う
   →共通するイテレーション処理を一度定義するだけでよい

 PHPコアの観点から
  オペコード;短くならない→今回のみ
  でも処理スピード速くなる(遅くならない)

 簡単にイテレーターを実装できるので使いましょう

・boolval()
  値の型を変換するcastと同じ
  castオペコードと1対1
  boolvalはスタック入れて、ファンクション
  処理遅くなり、オペコードが多くなる
  ただし、コールバックとして渡せる
 →できる限りcastを使いましょう

・zend_executeの実体化
 実行処理をオーバーライドするとき知識要る
 →5.5前と違う

 5.5前:実体化
  zend_executeに好きな関数入れて、実行

 5.5以降:実体化
  execute_ex
  zend_execute_ex
  executeはなくなった
  zend_execute→使い方が違う

 zend_execute()
   ↓
 (*zend_execute_ex)() = execute_ex();

 execute系取り扱い注意

・おわりに
 PHPコアに興味を持って!