2011-07-29 87 views
1

嗨我一直在玩弄過濾器類獲取和遇到了filter_callback過濾器的障礙。OOP類中的PHP FILTER_CALLBACK類

下面的代碼作品粗糙一點,但顯示了一個錯誤,每次

警告:filter_var()[function.filter-VAR]:第一個參數是有望成爲一個有效的回調/用戶/羅布/sites/test_val.php第12行

class test 

{ 

public function callback($string) 
{ 

$var = filter_var($string, FILTER_CALLBACK, array('options' => $this->foo($string))); 

} 

public function foo($string){ 

echo $string; 


} 

} 


$test = new test(); 

$string = 'test'; 

$tested = $test->callback($string); 

我是正確調用函數還是有不同的方式?

+0

*(參考)* [回調假](http://php.net/manual/en/language.pseudo-types.php#language.types .callback) – Gordon

+0

[如何使用對象方法作爲回調函數](http://stackoverflow.com/questions/3350762/how-to-use-an-object-method-as-a-callback-函數) – Gordon

回答

9
$this->foo($string) 

...應該是...

array($this, 'foo') 

當使用方法作爲回調,需要提供這樣的參考。

Documentation

+0

感謝您的幫助,他們是一種將多個變量傳遞給函數回調的方法嗎? – Robert

+1

@Robert該函數使用回調,而不是你,所以你不能傳遞額外的參數。 – alex

1

此代碼對我的作品:)

<?php 
    class myClass { 
    public function myFunc($var){ 
     return filter_var($var, FILTER_CALLBACK, array('options'=> 'self::myCallback')); 
    } 
    public function myCallback(){ 
     return true; 
    } 
    } 
$obj = new myClass(); 

var_dump($obj->myFunc("[email protected]")); 
//output:- bool(true) 

?>