PHPで利用するメソッドの動的な判別と分岐
Posted: Updated:
PHPでJavaScriptのように動的にメソッドを判別&指定
JavaScriptのように、と言うと語弊がありますが、書き方とノリにJavaScriptの影響が出た感じするな〜と、おもったのでなんとなくメモ。
あるメソッドが使えるならこっち、使えないならこっち、っていう感じ。
$xml = new \XMLReader(); // libxmlが入っていて、 // readOuterXmlメソッドが利用できるなら、 // _getObjectFromXmlString関数を使う $readIter = method_exists($xml, 'readOuterXml') ? '_getObjectFromXmlString' : '_getObjectFromDomElement'; function _getObjectFromXmlString($reader) { $xml = $reader->readOuterXml(); return simplexml_load_string($xml); } function _getObjectFromDomElement($reader) { $node = $reader->expand(); $dom = new \DomDocument(); $dom->formatOutput = true; $assocNode = $dom->importNode($node, true); $rv = simplexml_import_dom($assocNode); return $rv; } // …適当にポインタを移動させて… // ここで判別結果を使ってメソッド呼び出し while ($reader->{$readIter}()) { // …もごもご… }
デフォルメしたサンプルに落とし込んでいますが、実コードでは$this->{$this->readIter}()
という感じで、さらにディスディスした見た目になってます。うわぁ…。