PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Herausfinden, ob eine statische Klasse ein Interface implementiert?



Xerxes
05-03-2007, 12:18
Gibt es in PHP eine Möglichkeit, herauszufinden, ob eine statische Klasse ein bestimmtes Interface implementiert? instanceof arbeitet ja nur auf objekten und ein function_exists('Klasse::funktion') (was mir eigentlich reichen würde) funktioniert auch nicht.

Romanday
06-03-2007, 00:04
Gibt es in PHP eine Möglichkeit, herauszufinden, ob eine statische Klasse ein bestimmtes Interface implementiert? instanceof arbeitet ja nur auf objekten und ein function_exists('Klasse::funktion') (was mir eigentlich reichen würde) funktioniert auch nicht.

Wie wärs mit get_declared_interfaces() oder interface_exists()?
http://www.php.net/manual/en/function.get-declared-interfaces.php

Unter PHP4 kannst Du auch method_exists() nehmen.

Xerxes
06-03-2007, 07:54
ne. das geht leider beides nicht. get_declared_interfaces gibt mir ja nur ne liste aller interfaces zurück, aber sagt nichts darüber aus, ob eine klasse ein bestimmtes interface auch wirklich implementiert.

und method_exists() arbietet auch nur auf objekten, aber nicht direkt auf klassen.

hier ein beispiel von meinem problem:


interface Fooable {
public static function getFoo();
}

class Bar implements Fooable {

public static function getFoo() {
return 'Foo';
}
}

// Vor folgendem Funktionsaufruf möchte ich gern sichergehen, dass "Bar"
// "Fooable" implementiert:
$var = Bar::getFoo();