Aufruf einer PHP-Klasse innerhalb einer anderen Klasse
wirklich einfach, ich vermute aber, warum funktioniert das unter nicht funktionieren? Ich vermute, es ist ein Umfang Sache, wo class2 ist nicht sichtbar, innerhalb von class1. Ja, ich bin immer "Call to member function on a non-object" Fehler.
class class1 {
function func1() {
$class2->func3();
}
function func2() {
$this->func1();
}
}
class class2 {
function func3() {
echo "hello!";
}
}
$class1 = new class1();
$class2 = new class2();
$class1->func1;
Wenn jemand kann mir eine Lösung für dieses Problem wäre ich sehr dankbar. Ich habe lange gesucht, um für eine Weile aber ich bin immer eine Menge von Beispielen der anderen zu instanziieren versucht, neue Klassen innerhalb von anderen Klassen und ähnliche und nicht dieses problem habe ich auch.
Würden Sie im denken, ich don ' T tun eine ganze Menge mit Klassen!
- $class1 und $class sind Objekte, keine Klassen. Objekt ist Instanz einer Klasse. Sie können eine Menge von Objekten mit der gleichen Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP nicht bubblescope wie JavaScript, damit Sie für Ihre
$class2
ist nicht definiert:Quelle: http://php.net/manual/en/language.variables.scope.php
In anderen Worten, es gibt nur die Globale Reichweite und der Funktion/Methode-Bereich in PHP. Also, entweder geht der
$class2
- Instanz in der Methode als Mitarbeiterinoder Spritzen Sie es über den Konstruktor:
Empfehle ich Ihnen, einen Blick auf statische Funktionen/Attribute.
Im Grunde brauchen Sie nicht zu instanziieren, class2, Sie müssen nur definieren Sie die Funktion im inneren als statisch. Werfen Sie einen Blick auf die folgende Implementierung:
Es ist immer schön, zu vermeiden instanziieren Objekte, so viel wie möglich.
"Its always nice to avoid instantiating objects as much as possible."
Warum wäre das dann?Its always nice to avoid instantiating objects as much as possible.
- stick mit imperativen Programmierung dann gibt ' s keinen Punkt in der Beratung nicht mit Objekten in der OOP.Zwei Dinge:
Fügen Sie Klammern, um die Funktion call & verwenden Sie global, um die variable in den Bereich
global
Schlüsselwort ist stark entmutigt in der OOP: stackoverflow.com/questions/5166087/php-global-in-functions/...