首先,我完全使用Yii框架在PHP中工作,尽管Yii最终与这个问题没有多大关系。如何向PHP中的比较函数发送参数?
我有一个类,里面有一个名为$ data的数组。我想过滤掉某些数组中的某些元素,这些元素与我发送给这个类的参数不匹配(我会在下面给出一些语法来给你一个更好的想法)。因此,我使用array_filter,它需要其中一个输入为比较函数(即,对于特定元素返回true或false的任何输入,任何导致返回'false'的元素都将从数组中移除)。
问题在于,因为输入的函数是用引号输入的,所以我没有看到在实际类中使用比较函数的方法。但是当函数在类之外时,我无法调用我需要的实例变量。所以我真正需要的是能够以某种方式调用该类的以外的实例变量,将实例变量作为参数发送给函数,或以某种方式将比较函数保留在类中。
对此的任何想法?我提到的类是Yii中的一个小部件。下面是对这个小部件的调用(不是那么重要)。相关参数是'params'。
$this->widget('application.widgets.CListViewParam', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'params'=>array('receiverId'=>Yii::app()->user->userId),
));
有一个在插件一类中的实例变量来保存参数:
public $params = array();
然后有一个呼叫到array_filter和比较功能:
$data = array_filter($data, "filterData");
的实际比较功能并不重要,但下面是骨架。请记住,它不在课堂上。
function filterData($item) {
// unable to access $this->params inside of this function!
}
你有没有考虑过在你的课堂中使用静态方法? – 2011-06-12 00:14:39