読者になるhnwの日記この広告は、90日以上更新していないブログに表示しています。2017-05-20PHPのシンボルテーブルを覗いてみるPHPTweetPHPのシンボルテーブルというのはC実装のレベルの用語で、その時点で有効な変数テーブルのことを指します。グローバルスコープならグローバル変数を管理する変数テーブル、関数スコープならローカル変数を管理する変数テーブルの意味になります。今回、自作エクステンションhnw/php-arraydumperでシンボルテーブルをvar_dump()するだけの関数symbol_table_dump()を実装してみました。下記のように使います。symbol_table_dump();}foo("bar");出力は次のようになります。int(2)}このシンボルテーブルは$$varのようなイカれた変数アクセスの際に参照する必要がありますが、そうでも無い限り不要です。通常のローカル変数はコンパイル時に全部解決できてしまうので、通常の変数アクセスのみであれば実行時にシンボルテーブルへのアクセスは発生しないのです。5.3以降ではローカル変数に対応するシンボルテーブルは必要になるまで作られません。$$varのような変数アクセスがあったタイミングで内部的にzend_rebuild_symbol_table()が呼び出され、そのスコープに対応するシンボルテーブルが構築されます。逆に言うと、$$varのような変数アクセスを多用するのは性能面でペナルティがあると言えるかもしれません。致命的な性能差が出るほどではないでしょうし、そもそもそんな変数アクセスをしたい状況が珍しいとは思いますが。2015の11日目です。2015の3日目です。...2013-01-14PHP5.5のジェネレータをSPLのイテレータと組み合わせてみるリリースが間近になったPHP5.5ではジェネレータが導入される予...2012-05-03PHPの対話モードでuseしたら1行後には忘れられてたPHPの対話モードに関する小ネタです。12はてなブログをはじめよう!hnwさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。