闇PHP勉強会で、不死身のphp拡張を作ろうとしている話をしてきた事


気軽に die するプログラムがあってテストしづらい、という話を以前聞いたことがあり、「たしか、拡張で opcode フックできたよなー」と思ったので、 die したときに単純に死ぬのではなく、何かをすることができる拡張をつくってみようかなと思って書き始めてみたよという話。

発表時はまだほとんどコードを書いてない状態で、しかも資料も即興で書いたのでgdgd でしたごめんなさい。

なので資料は発表時から少しに手を加えてあります。

また、コードも hnw さんに提案されたとおりに die されたら 例外吐くようにしてみました。

<?php
# zend_extension=immorttal.so;
ini_set('immortal.throw_exception_at_exit', 1);

function I_will_be_back() {
    die();
}

try {
    I_will_be_back();
} catch (Exception $e) {
    echo "returned!";
}

こいつが、 returned! となるわけですね。

コードは do-aki/immortal - github に置いてあります。