Ich suche nach einer Möglichkeit zu wissen, ob die an eine Methode übergebenen Parameter eine Konstante sind, die in einer bestimmten Klasse definiert ist. Zum Beispiel:Überprüfen Sie, ob die an eine Methode übergebenen Parameter eine der in einer Klasse definierten Konstanten sind.
class MyClass {
const CONSTANT = 4;
const ANOTHER_CONSTANT = 5;
public function aMethod ($a_CONSTANT) {
// function code
}
}
$myClass = new MyClass();
$myClass->aMethod(MyClass::CONSTANT); // Fine
$myClass->aMethod(MyClass::ANOTHER_CONSTANT) ; // Still okay
$myClass->aMethod(4); // Not okay
$myClass->aMethod(OtherClass::VALUE); // No way
In dem obigen Code, zunächst zwei Anrufe aMethod
akzeptabel sind, aber ich mag der Parser einen Fehler zu geben, während der dritte und vierte Aufruf aMethod
geschieht, da die zu aMethod
gebene Wert nicht a Konstante einer bestimmten Klasse (MyClass
, in diesem Fall). Gibt es eine Syntax, um den Parameter in aMethod
einzugeben, um zu erreichen, was ich will?
Nein. Sie müssen den übergebenen Wert anhand dieser Konstanten manuell überprüfen. Eine Konstante ist nur ein Container für einen Wert. Wenn Sie eine Konstante an eine Methode übergeben, wird nur der Wert übergeben. Die Klasse hat keine Ahnung, und sollte auch nicht, woher dieser Wert im äußeren Bereich kam. Es geht nur um den tatsächlichen Wert. –