PHPで利用するメソッドの動的な判別と分岐

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}()という感じで、さらにディスディスした見た目になってます。うわぁ…。


Author

ahomuAyumu Sato

KINTOテクノロジーズ株式会社

Web 技術、組織開発、趣味など雑多なブログ。技術の話題は zenn、ご飯の話題はしずかなインターネットにも分散して投稿しています。

Bio: aho.mu
X: @ahomu
Zenn: ahomu
GitHub: ahomu
Sizu: ahomu

Related

Latest

Archives

Tags

Search