Ich benutze eine Schnittstelle für eine Reihe von Klassen. Ich habe jedoch ein Problem, weil ich möchte, dass visibility
in der Schnittstelle erlaubt ist (das heißt: public
, protected
und private
).PHP-Schnittstelle: Any Sichtbarkeit geben
Ich brauche die Mutter Methode nur, und ich muss sein privates das Kind Verfahren geschützt werden, aber ich habe den Fehler sagen
Fatal error: Access type for interface method Baz::qux() must be omitted in <the file with Baz/Bar>."
Ich habe versucht, in der inteface andere Sicht Methoden spezifiziert Baz
und Entfernen public
, aber sie alle versagten.
Gibt es einen Weg, ich kann es über die Schnittstelle tun? Wenn nicht, dann gibt es einen Weg, ich kann es abstract
deklarieren, ich habe das auch versucht, aber gescheitert.
interface Baz
{
public function qux();
}
class Bar implements Baz
{
protected function qux()
{
//do foo
}
}
class Foo extends Bar implements Baz
{
private function qux()
{
parent::qux();
}
}
Wann immer Sie so etwas zu brauchen scheinen, ist dies normalerweise ein starkes Anzeichen dafür, dass etwas mit Ihrem Konzept nicht stimmt. – Niko
Entschuldigung, jetzt weiß ich das. Danke für die Info alle. – PolishHurricane
Eine Schnittstelle ist nur ein Drahtgitter, also warum interessieren Sie sich für Sichtbarkeit darin –