ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

未定義の定数の扱い

警告が出るのは構わないのですが、定数名称を出力しようとするのが気に入りません。
っていうか、無理して出力しようとするのは良くないと思います。

<?php
echo HOGE;
?>

結果
---
Notice: Use of undefined constant HOGE - assumed 'HOGE' in /home/masugata/define.php on line 3
HOGE

これを改善すべくタコさんパッチ。

--- php-4.4.2,orig/Zend/zend_execute.c	2006-01-01 22:46:49.000000000 +0900
+++ php-4.4.2/Zend/zend_execute.c	2006-02-22 15:09:44.000000000 +0900
@@ -2080,6 +2080,7 @@
 								EX(opline)->op1.u.constant.value.str.val,
 								EX(opline)->op1.u.constant.value.str.val);
 					EX(Ts)[EX(opline)->result.u.var].tmp_var = EX(opline)->op1.u.constant;
+					EX(Ts)[EX(opline)->result.u.var].tmp_var.value.str.len = 0;
 					zval_copy_ctor(&EX(Ts)[EX(opline)->result.u.var].tmp_var);
 				}
 				NEXT_OPCODE();

このタコさんパッチを適用する事で(また一つ)悩みが解消。

<?php
echo HOGE;
?>

結果
---
Notice: Use of undefined constant HOGE - assumed 'HOGE' in /home/masugata/define.php on line 3