我有以下字符串:
$str = "methodA()->methodB()->methodC"
我想在一个对象上调用那个“链”
$obj->$str
我目前正在与 ()-> 拆分并一一调用,但必须有更好的方法。
我怎样才能在一条线上调用它?谢谢!
编辑:更多上下文信息:
我为 symfony 1.4 创建了一个 Doctrine Behavior,以便能够使用 Zend Lucene 从模式中搜索某些表。
简而言之,我需要一种方式来表达“要获取可搜索字段,您必须调用 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();
}