PHP array_filter auf Objekte

Ich versuche zu verwenden array_filter auf ein array von Objekten, und über eine öffentliche Methode von der foo-Klasse als callback. Ich weiß nicht, wie dies zu tun wenn.

War ich immer zu diesem Ergebnis: Fatal error: Using $this when not in object context was ich kann erraten ist, weil es den Aufruf der bar-Methode in einer statischen Art und Weise, aber wie übergeben Sie die Objekte an die array_filter callback-Methode, richtig?

function foobar_filter($obj) {
    return $obj->bar();
}

class foo {
    private $value;
    public function __construct($value) {
        $this->value = $value;
    }
    public function bar() {
        //checking if $this is set to avoid "using this when not in object yadayada"-message
        if ($this) return ($this->value > 10);
        else return false;
    }
}

$arr = array(new foo(12), new foo(42), new foo(4));
var_dump($arr);

//Here is the workaround that makes it work, but I'd like to use the objects' method directly. This is the result that I am expecting to get from $arr3 as well
$arr2 = array_filter($arr, "foobar_filter");
var_dump($arr2);

//I would like this to work, somehow...
$arr3 = array_filter($arr, array(foo, "bar"));
var_dump($arr3);

So das Ergebnis erwarte ich ein array mit zwei Objekten der Klasse foo mit den Werten 12 und 42.

Für Ihre Informationen, ich bin mit PHP 5.2.6, aber ich wäre froh, wenn es möglich ist, mit jeder PHP-version.

Schreibe einen Kommentar