From de13d68cddef5bb321469bcffb868f27ddd5390e Mon Sep 17 00:00:00 2001
From: nsfisis
+
<?php
try {
f(g() / __LINE__);
@@ -239,7 +239,7 @@
このうち 1つ目のケースは、finally節の中でエラーを投げると PHP 処理系が勝手に$previousを設定してくれる。
-
+
<?php
try {
@@ -267,7 +267,7 @@
出力部をコメントや改行を追加して再掲する:
-
+
<?php
try {
f(g() / __LINE__);
@@ -287,7 +287,7 @@
フォーマット指定子%cは、整数を ASCII コードと見做して印字する。トークン#base64_decode('SGVsbG8sIFdvcmxkIQ==')のbであれば、ASCII コード98なので、75 行目で発生したエラー、
-
+
1, 20 => 0 / 0,
@@ -306,7 +306,7 @@
f()の定義を再掲する (エラーオブジェクトの行数を利用しているので、一部分だけ抜き出すと値が変わることに注意):
-
+
function f(int $i) {
if ($i < 0) f();
try {
@@ -333,13 +333,13 @@
前述のように、finally節でエラーを投げると PHP 処理系が$previousを設定する。ここでは、エラーを繋げるためにf()を再帰呼び出ししている。最初にf()を呼び出している箇所を確認すると、
-
+
<?php
try {
f(g() / __LINE__); // 3 行目
-
+
function g() {
return __LINE__; // 111 行目
}
--
cgit v1.2.3-70-g09d2