Kann überprüft werden, ob eine Methode in PHP von einer untergeordneten Klasse überschrieben wurde?php überprüfen, ob die Methode in der untergeordneten Klasse überschrieben wurde
<!-- language: lang-php -->
class foo {
protected $url;
protected $name;
protected $id;
var $baz;
function __construct($name, $id, $url) {
$this->name = $name;
$this->id = $id;
$this->url = $url;
}
function createTable($data) {
// do default actions
}
}
Kinderklasse:
class bar extends foo {
public $goo;
public function createTable($data) {
// different code here
}
}
Wenn durch eine Reihe von Objekten als Mitglieder dieser Klasse definiert laufen, wie kann ich überprüfen, welche der Objekte, die neue Methode hat als mit dem alten Gegensatz? Funktioniert eine Funktion wie method_overridden(mixed $object, string $method name)
?
foreach ($objects as $ob) {
if (method_overridden($ob, "createTable")) {
// stuff that should only happen if this method is overridden
}
$ob->createTable($dataset);
}
Ich bin mir der template method pattern, aber lassen Sie uns sagen, dass ich die Kontrolle des Programms wollen aus der Klasse getrennt sein und die Methoden selbst. Ich würde eine Funktion wie method_overridden
benötigen, um dies zu erreichen.
Überladene oder außer Kraft gesetzt? Ich dachte, PHP hatte keine Methode überladen –
Ich meinte, überfahren, ja – Joey
Sie könnten dies versuchen: http://www.php.net/manual/en/reflectionclass.hasmethod.php –