きのう(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コアに興味を持って!