Operator?
Severin
- php
0 Carsten0 Sönke Tesch0 Severin
Hallo,
ich habe mir erst kürzlich das Buch PHP4 von Jörg Krause gekauft und habe jezt ein Problem mit einem Beispiel, das ich genau abgetippt habe, aber dennoch nicht zum funktionieren kriege.Ich weiss nicht ob es zur lösung des Problems wichtig ist, aber ich verwende Apache 1.3.2 und PHP 4.3.0.
Hier ist der code:
-------------------------------------------
<?php
class printdate {
var $sprache;
var $zeit;
function weekday(){
$old = setlocale(LC_TIME,$this->sprache);
echo strftime("%A",this->zeit); /*die " um das %A habe ich eingefügt da es der PHP parser sonst anscheinend nicht versteht */
setlocale(LC_TIME,$old);
}
function month() {
$old = setlocale(LC_TIME,$this->sprache);
echo strftime("%B",this->zeit);
setlocale(LC_TIME,$old);
}
}
$dd= new printdate;
$de=new printdate;
$dd->sprache = ge;
$de->sprache = fr;
$dd->zeit = $de->zeit = time ();
$dd->weekday();
echo "<hr>";/*auch hier habe ich anführungszeichen hinzugefügt*/
$de->weekday();
/*da ist der code zu ende, die lezten zwei zeilen sind nur eine art "Bibliothek" für mich, um schnell den code und das resultat sehen zu könnn */
echo "<hr><br><hr>";
highlight_file("firstclass.php");
?>
---------------------------------
Das Problem schein zu sein das PHP den Operator -> nicht kennt, ich weiss aber nicht was ich an seiner stelle setzten soll, ich habe auch schon auf php.net nachgesehen, aber dieser Operator schein nicht zu existieren.
Danke für die Hilfe im Voraus,
Severin
Hi Severin,
... das ich genau abgetippt habe
Schlauerweise hat der Autor ein paar von den gängigeren Tippfehlern dringelassen, sonst lernste ja nie die zu finden ;-)
echo strftime("%A", this->zeit);
// ^
hier ist der Parser-Fehler, eine Zeile drüber steht es richtig. Der gleiche Fehler (übrigens ein sehr typischer Fehler) kommt etwas weiter unten nochmal vor.
/*die " um das %A habe ich eingefügt da es der PHP parser sonst anscheinend nicht versteht */
Das ist richtig, aber es sollte dir verständlich sein, dass der Parser das ansonsten nicht nur anscheinend nicht versteht, sondern das da ansonsten Unsinn steht. (Was soll denn %A sein? Das % ist ein duadischer Operator(also sowas wie +, nur das es den Rest einer Divison liefert)), d.h. es hat rechts und links je einen Operanden, und der links fehlt hier ja eindeutig.)
Gruss,
Carsten
ok nun auf die gefahr hin, wie ein idiot zu klingen, kannst du mir aufschreiben was ich tippen soll?
Das ist richtig, aber es sollte dir verständlich sein, dass der Parser das ansonsten nicht nur anscheinend nicht versteht, sondern das da ansonsten Unsinn steht. (Was soll denn %A sein? Das % ist ein duadischer Operator(also sowas wie +, nur das es den Rest einer Divison liefert)), d.h. es hat rechts und links je einen Operanden, und der links fehlt hier ja eindeutig.)
Nun im Buch steht (S 213)
-Zitat-
Formatfunktionen
Die Funktion strftime ähnelt date(....) Die Parameter werden dabei immer von einem Prozentzeichen eingeleitet und gelten entsprechend Folgender liste:
...
%A
Voller Name des Wochentages: >>Monday<<
vollständige Liste und weiter informationen http://www.php.net/manual/en/function.strftime.php
Ich scheine da wirklich noch nicht ganz durchzublicken ;(
Severin
Hi Severin,
....kannst du mir aufschreiben was ich tippen soll?
"Ich will selber denken und nicht immer nur abtippen" und zwar 100 mal.
Nein, mal im Ernst, das mit den Anführungszeichen ist ganz richtig so. Guck dir einfach mal die Beispiele unter dem Link auf php.net an, das machen alle so.
Ich hatte einfach nur versucht zu erklären was der Parser sieht, wenn die Anführungszeichen da _nicht_ stehen und warum das schiefgehen muss.
Gruss,
Carsten
ich habe mir erst kürzlich das Buch PHP4 von Jörg Krause gekauft und habe jezt ein Problem mit einem Beispiel, das ich genau abgetippt habe, aber dennoch nicht zum funktionieren kriege.
Wenn Du das _genau_ abgetippt hast, dann solltest Du das Buch schleunigst der Altpapierverwertung zuführen..
Parse error: parse error, unexpected T_OBJECT_OPERATOR in c:\kino\kino-fahrplan.de\htdocs\werkbank\test.php on line 27
Zeile 22:
$old = setlocale(LC_TIME,this->sprache);
Zeile 27:
echo strftime("%B",this->zeit);
Das Problem schein zu sein das PHP den Operator -> nicht kennt, ich weiss aber nicht was ich an seiner stelle setzten soll, ich habe auch schon auf php.net nachgesehen, aber dieser Operator schein nicht zu existieren.
Es wäre gut gewesen, wenn Du Fehlermeldung und -ort mit angegeben hättest:
Parse error: parse error, unexpected T_OBJECT_OPERATOR on line 22 (bzw. 27)
Lies es nochmal genau, da steht: "unexpected", das heißt "unerwartet", nicht "unbekannt" - das -> steht also an einer Stelle, an der es nicht hingehört. Wenn Du Dir die beiden Zeilen ebenfalls nochmal genau anschaust, wirst Du sehen, daß die Variable "this", auf die Du -> anwenden willst, eigentlich keine Variable ist, weil davor das Dollarzeichen fehlt.
$dd->sprache = ge;
$de->sprache = fr;
Und auch hier gehören Anführungszeichen rein ("ge" und "fr"). Was hat das Buch gekostet? Oder war Deine Lesebrille billiger als das Buch? ;)
Gruß,
soenk.e
Hallo,
Vielen Dank.
Es war wirklich nur das Dollar zeichen das gefehlt hat, und mir ist das 2 Tage lang nicht aufgefallen. Ich nehme an dass ich es vergessen habe, und nicht bemerkt habe, da das Dollarzeichen in Javascript nicht vorkommt und ich mich bis jezt nur mit javascript beschäftigt habe. Also scheine ich die Variable immer unbewusst als "richtig" gelesen zu haben.
Es wäre gut gewesen, wenn Du Fehlermeldung und -ort mit angegeben hättest:
Ok das werde ich nächstes mal machen, wie gesagt habe ich gerade erst mit php begonnen und muss erst "ein Gefühl" dafür bekommen.
Vielen Dank nochmals,
Severin
PS:vielleich käme mir eine Brille wirklich billiger ;P