Daywalker: usort() in Klasse

Beitrag lesen

Eine Methode einer Klasse verwendet die usort-Methode. Als Vergleichsfunktion soll eine Methode der Klasse übergeben werden.
Leider erhalte ich die Fehlermeldung, dass die Vergleichsfunktion ungültig ist.

Der Parameter, der den Funktionsnamen der Vergleichsfunktion entgegennimmt, ist vom Typ "callback" (vgl. PHP-Manual).

Ein Parameter vom Typ Callback kann zwei Arten von Werten entgegennehmen:

1. Einen String mit einem globalen Funktionsnamen.

2. Ein Array mit zwei Werten. Wert 1 ist eine Klassenvariable, Wert 2 ist ein String mit einem Methodennamen in dieser Klasse.

Das bedeutet für deinen Anwendungsfall: Du willst die Methode 'dateSorting' in der Klasse $this aufrufen, also mußt du als Parameter nicht den String 'dateSorting' übergeben (das wäre nur möglich, wenn die Sortierfunktion außerhalb der Klasse definiert worden wäre), sondern du mußt ein Array übergeben:

Falsch:
usort($_SESSION['data'],'dateSorting')

Richtig:
usort($_SESSION['data'],array($this,'dateSorting'));

Wie gesagt: Diese Vorgehensweise ist gültig für alles, was einen Parameter vom Typ Callback erwartet, nicht nur für die Sortierfunktionen.