PHP, wie wir alle wissen, ist sehr locker typisiert. Für die Sprache müssen Sie keinen Typ für Funktionsparameter oder Klassenvariablen angeben. Dies kann eine leistungsstarke Funktion sein.Wie verhindere ich die Verwendung des falschen Typs in PHP?
Manchmal kann es jedoch das Debuggen Ihres Skripts zu einer schmerzhaften Erfahrung machen. Wenn beispielsweise ein Objekt in eine Methode übergeben wird, die eine andere Art von Objekt erwartet, kann dies zu Fehlermeldungen führen, die darauf hinweisen, dass eine bestimmte Variable/Methode für das übergebene Objekt nicht existiert. Diese Situationen sind meistens Ärgernisse. Schwierigere Probleme treten auf, wenn Sie ein Objekt mit einem Objekt der falschen Klasse initialisieren und dieses "falsche Objekt" erst später in der Skriptausführung verwendet wird. In diesem Fall erhalten Sie viel später einen Fehler als bei der Übergabe des ursprünglichen Arguments.
Statt zu klagen, was ich bestanden haben keine bestimmte Methode oder Variable, oder warten, bis viel später in der Skriptausführung für meine in-Objekt übergeben verwendet werden, Ich würde viel lieber eine Fehlermeldung, zumin genau dort, wo ich ein Objekt vom falschen Typ anführe, beschwere ich mich darüber, dass der Objekttyp falsch oder inkompatibel ist.
Wie gehen Sie in Ihrem Code mit diesen Situationen um? Wie erkennen Sie inkompatible Typen? Wie kann ich in meine Skripte eine Typüberprüfung einführen, damit ich Fehlermeldungen leichter verstehen kann?
Wie können Sie all dies während der Vererbung in PHP tun? Bedenken Sie:
<?php
class InterfaceClass
{
#...
}
class UsesInterfaceClass
{
function SetObject(&$obj)
{
// What do I put here to make sure that $obj either
// is of type InterfaceObject or inherits from it
}
}
?>
Dann wird ein Benutzer dieses Code implementiert die Schnittstelle mit eigenen konkreten Klasse:
<?php
class ConcreteClass extends InterfaceClass
{
}
?>
ich ConcreteClass Instanzen wollen, und alle zukünftigen unbekannten benutzerdefinierten Objekte, auch akzeptabel sein zu SetObject. Wie würden Sie dies bei der Überprüfung des richtigen Typs zulassen?
Instanceof nützlich ist. Denken Sie daran, es nicht zu missbrauchen. –