首先,我完全使用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