回答編集履歴
1
おかしな説明の所を修正
answer
CHANGED
@@ -123,7 +123,7 @@
|
|
123
123
|
|
124
124
|
* `zend_declare_class_constant_ex()`<zen_API.c >にて、zend_class_entryのconstants_table(HashTableという型のハッシュテーブル)に`zend_hash_add_ptr()`で追加することでクラスの定義が行われます。
|
125
125
|
* `zend_compile_class_const_decl()`<zend_complie.c>にて、astから名前のastと値のastを取得し、値のastを`zend_const_expr_to_zval()`に投げた結果のzvalを`zend_declare_class_constant_ex()`に投げています。
|
126
|
-
* zend_const_expr_to_zval()<zend_compile.c>
|
126
|
+
* zend_const_expr_to_zval()<zend_compile.c>にて、`zend_compile_const_expr()`の処理があり、クラス定数ならさらに`zend_compile_const_expr_class_const()`が呼ばれまてastがzvalを取れる形に変換されます。
|
127
|
-
* `zend_compile_const_expr_class_const()`
|
127
|
+
* `zend_compile_const_expr_class_const()`にて、クラス定数がまた未定義の時は、astを`クラス名::定数名`を見に行くzvalに変換します。
|
128
128
|
|
129
129
|
PHPにそこまで詳しくないので間違っているかも知れませんが、上のような動きのようです。ということで、ソースコードを見る限り、**JunSuzukiJapanさんの推測が正しい**と思われます。ベストアンサーはJunSuzukiJapanさんに上げたいと思います。
|