처음에는 Yii 프레임 워크를 사용하여 PHP로 작업하고 있습니다.하지만 Yii는 궁극적으로이 질문과 관련이 거의 없습니다.PHP의 비교 함수에 매개 변수를 보내려면 어떻게해야합니까?
클래스가 있는데, 그 안에 $ data라는 배열이 있습니다. 클래스에 보내는 매개 변수와 일치하지 않는 배열의 특정 요소를 필터링하려고합니다 (더 나은 아이디어를 제공하기 위해 아래에 몇 가지 구문을 넣을 것입니다). 따라서 array_filter를 사용하고 있는데, 입력 중 하나가 비교 함수 (즉, 특정 요소에 대해 true 또는 false를 반환하는 입력 중 하나)가 필요합니다. 'false'가 반환되도록하는 모든 것은 배열에서 제거됩니다.
입력 한 함수가 따옴표로 묶여 있기 때문에 실제 함수 내에서 비교 함수를 사용할 수있는 방법이 없다는 것이 문제입니다. 그러나 함수가 클래스 외부에있을 때 필요한 인스턴스 변수를 호출 할 수 없습니다. 그래서 실제로 필요한 것은 인스턴스 변수 을 클래스의 외부로 호출하거나, 인스턴스 변수를 매개 변수로 함수에 보내거나, 클래스 내에서 어떻게 든 비교 함수를 유지할 수있게하는 것입니다.
이것에 대한 아이디어가 있습니까? 제가 언급 한 수업은 Yii의 위젯입니다. 아래는 위젯 (중요하지 않음)에 대한 호출입니다. 관련 매개 변수는 '매개 변수'입니다.
$data = array_filter($data, "filterData");
:
public $params = array();
그런 array_filter의 호출 및 비교 기능이있다 :
$this->widget('application.widgets.CListViewParam', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'params'=>array('receiverId'=>Yii::app()->user->userId),
));
매개 변수를 저장할 수있는 위젯의 클래스 내에서 인스턴스 변수가있다 실제 비교 기능은 중요하지 않지만 아래는 해골입니다. 그것이 교실 밖이라는 것을 기억하십시오.
function filterData($item) {
// unable to access $this->params inside of this function!
}
클래스에'정적'메소드를 고려 했습니까? –