次の文字列があります。
$str = "methodA()->methodB()->methodC"
そして、オブジェクトの「チェーン」を呼び出したい
$obj->$str
現在 ()-> で分割して 1 つずつ呼び出していますが、もっと良い方法があるはずです。
どうすれば1行で呼び出すことができますか? ありがとう!
編集: いくつかのより多くのコンテキスト情報:
Zend Lucene で検索可能なスキーマから特定のテーブルを作成できるように、symfony 1.4 の Doctrine Behavior を作成しました。
要するに、「検索可能なフィールドを取得するには、methodA()->methodB()->methodC() を呼び出す必要があります」という動作を言う方法が必要です。
EDIT2:多分私は十分に明確ではありませんでした。$obj と $str は実行時に決定されるため、提案の一部は適用されません。
EDIT3:あなたが疑問に思っている場合のために、私は現在これをやっています:
<?php
$chain = explode("()->",$str);
$method = array_shift($chain);
$value = $obj->$method();
foreach($chain as $method){
$value = $value->$method();
}