Kann ich/Wie... Aufruf einer geschützten Funktion außerhalb einer Klasse in PHP
Habe ich eine geschützte Funktion, die definiert wird, innerhalb einer bestimmten Klasse. Ich möchte in der Lage sein, rufen Sie diese geschützte Funktion außerhalb der Klasse innerhalb einer anderen Funktion. Ist das möglich und wenn ja wie kann ich es erreichen
class cExample{
protected function funExample(){
//functional code goes here
return $someVar
}//end of function
}//end of class
function outsideFunction(){
//Calls funExample();
}
Das können Sie nicht. Das würde Niederlage der Zweck der mit einem geschützten Funktion in den ersten Platz. Könnten Sie eine öffentliche Methode, die unter Berufung auf die protected-Methode in Ihrem Namen, aber warum dann eine protected-Methode, um mit zu beginnen?
Ein Duplikat der stackoverflow.com/q/12255740/2088851
Ein Duplikat der stackoverflow.com/q/12255740/2088851
InformationsquelleAutor Terry Hoverter | 2013-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist der Sinn von OOP - Kapselung:
Private
Geschützt
Öffentlichen
Wenn Sie immer noch wollen, um die trigger-Funktion außerhalb, können Sie deklarieren Sie eine öffentliche Methode, löst Ihre protected-Methode:
InformationsquelleAutor vikingmaster
Technisch ist es möglich, zum aufrufen von private und protected Methoden über die reflection-API. Jedoch 99% der Zeit dies ist eine wirklich schlechte Idee. Wenn Sie die Klasse ändern, die dann die richtige Lösung ist wahrscheinlich zu einfach machen, die Methode public. Nach allem, wenn Sie brauchen, um den Zugriff außerhalb der Klasse, dass Niederlagen den Punkt zu markieren, geschützt.
Hier ist eine kurze Reflexion. B. in diesem Fall ist einer der sehr wenigen Situationen, wo es wirklich notwendig ist:
Nebenbei bemerkt: Diese ist in PHP 5.4+ (Yeah!)
Änderungen/neue Möglichkeiten in 2018 ?
Das ist reines gold (Und die eigentliche Antwort auf die Frage)
InformationsquelleAutor Peter Geer
Können Sie überschreiben diese Klasse mit anderen, wo Sie diese öffentlich.
(Hinweis: dies funktioniert nicht mit der privaten Mitglieder)
Aber die Idee, private und protected-Elemente ist zu NICHT als von außen.
InformationsquelleAutor Voitcus
Wenn Sie möchten, zu teilen code zwischen Ihre Klassen, die Sie verwenden können, Charakterzüge, aber es hängt davon ab, wie Sie möchten, verwenden Sie die Funktion/Methode.
Sowieso
Dies funktionieren wird, aber im Hinterkopf behalten, dass Sie nicht wissen, was Ihr Klasse gemacht dieser Weg. Wenn Sie ändern die Eigenschaft, alle Ihre Klassen, die es benutzen, werden verändert werden. Es ist auch eine gute übung für das schreiben einer Schnittstelle für jede Eigenschaft, die Sie verwenden.
InformationsquelleAutor mhlavac
hier kann ich Ihnen ein Beispiel geben, wie unten
oder einen anderen Weg, um mit den neuesten php -
In PHP können Sie dies tun, indem Sie Reflexionen. Aufrufen, protected oder private Methoden verwenden, die setAccessible () - Methode http://php.net/reflectionmethod.setaccessible (nur setzen Sie ihn auf TRUE)
InformationsquelleAutor liyakat