PHP - Private Klassenvariablen gibt Fehler: undefined variable
Bin ich immer die Fehlermeldung "Undefined variable: Zeit in C:\wamp\www\DGC\classes\DateFilter.php"
Hier ist mein code für die DateFilter Klasse:
class DateFilter extends Filter
{
//@param daysOld: how many days can be passed to be included in filter
//Ex. If daysOld = 7, everything that is less than a week old is included
private $interval;
public function DateFilter($daysOld)
{
echo 'days old' . $daysOld .'</br>';
$interval = new DateInterval('P'.$daysOld.'D');
}
function test()
{
echo $interval->format("%d days old </br>");
//echo 'bla';
}
}
Wenn ich eine neue Instanz erstellen, der DateFilter Klasse und Aufruf test () - geben Sie mir die Fehler. Ich weiß, es bedeutet, dass die variable noch nicht initialisiert wurde, aber ich weiß, dass der Konstruktor aufgerufen, weil ich ein echo-Anweisung in es und es ausgegeben wurde.
Habe ich auch schon versucht:
$::$Intervall->format(...);
self::$Intervall->format(...);
aber es hat nicht funktioniert.
Ich weiß, dies ist wahrscheinlich eine einfache Lösung, sorry für die noob-Frage. Kann nicht glauben, dass das überfragt mich.
InformationsquelleAutor CHawk | 2011-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie
$this->interval
Zugriff auf die member-variableinterval
in PHP. Sehen PHP: Die Grundlagenentfernen Sie die zweite dollar-Zeichen. Es ist $this->Intervall
Ich habe immer ziemlich "strange", dass PHP Kräfte Sie
$this
Zugriff auf Objekt-Felder. Viele andere Sprachen wie C# nicht (wenn die variable nicht den gleichen Namen lokal). Ohnehin ist der Einsatz vonthis
ist immer eine gute Praxis, IMHO: es hilft Ihnen, schneller Blick auf Objekt-Eigenschaften und Vermeidung von Verwechslungen mit lokalen Variablen.Auf jeden Fall. Python hat die gleiche Anforderung (mit 'self.' zwar 'selbst' ist nur eine Konvention, und Sie haben, um tatsächlich einen "selbst" - parameter in einer Funktion). Ich bin nicht dagegen, weil es sicherstellt, dass Sie wissen, was Sie eigentlich verweisen. Ganz wichtig in dieser dynamischen Sprachen, wenn Sie können erklären, Sachen ganz über dem Platz.
Vielen Dank für die Hilfe! Ich bin verwenden, zu Sprachen, für die dies optional ist. Egal, Wann nehme ich die 2 dollar-Zeichen, ich bekomme diese Fehlermeldung: Fatal error: Call to a member function format() on a non-object
InformationsquelleAutor Jonathon Reinhart
$interval
ist lokal zu der Funktion.$this->interval
Referenzen zu privaten Eigentum.InformationsquelleAutor Herbert
InformationsquelleAutor CheeseSucker
versuchen
und
InformationsquelleAutor Jan Wiemers