gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

ini_set()どうすっかねぇ…

色々とテストを作っていてふと「ini_set()のテストも組まないとなぁ」が、面倒の始まりでした。


当初の思惑としては「多分、noticeなりwarningが出るだろうから、その辺のエラーうまいこと拾えばよいかねぇ」とか思ってたのですが。
「戻り値にfalse返してくるけど、それ以外はうんともすんとも言わない」のですよ…うんまぁわからんでもないが…


…あれでもおかしいなぁなんか警告出てた記憶があるなぁ、と思ったのですが。
「新しいバージョンで非推奨になったものについてはDeprecatedが出る」のですが「根本的に綴り間違い」だとfalse returnしか出てこないのです……
実際に

<?php

ini_set('display_errors', '1');
error_reporting(-1);

$r = ini_set('hoge', 'on');
var_dump($r);

こんなコードを書いても。
false returnは確認できるのですが、それ以外はうんともすんともにゃんともかんとも。


ここで気になるのが、過去の記憶。
「それPHP_INI_SYSTEMだからini_setで変更できねぇから!!」から「ini_setで渡す文字列間違えてるぢゃん!!」まで、問題挙動を結構見ている記憶がモリモリと出てくるのでございます。
…正直「ini_setで戻り値チェック」とか、今まで見た記憶もねぇしなぁ。


…と、ここまでで現時点。
「一枚ラップかまそう」かとは思ってるのですが…「関数callのコスト」が微妙に気になって…でもまぁ「ンなコストよりも面倒をつぶすほうがいい」かなぁ、とも思っていて、揺れるおいちゃん心でございます。


多分、ラップはこんな関数になると予想。

function mw_ini_set(string $varname, string $newvalue) {
    // ini_set発行
    $r = ini_set($varname, $newvalue);
    // エラーチェック
    if (false === $r) {
        // 「動きとめる」くらいの強硬手段でよかんべさ
        trigger_error("ini_set error!!({$varname})", E_USER_ERROR);
    }
    // else
    return $r;
}


もうチョイと煩悶してみます。
……どっかで「腑に落ちた」ら、MagicWeaponには追加して、ついでにmw_ini_set.incとかを書きなおそうかと思います。


まだちょっと煩悶してるので、ご意見などありましたら、ぜひ。