PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : php code immer ganz lesen ?



localhost
22-09-2004, 15:32
Hallo

Wiso list php auch code der garnicht beütigt wir z.b.


if(2 ==7)
(
// die klammer sind hier nicht auf der tasterur

wenn ich hier jetzt einen syntex fehler machen bekomme ich den angezeigt obwohl der das hier in disser if doch garnicht braucht
)

frage
geht sowas auf die perormens wenn ich in einer datei.php ewich viel code hab garnicht gebraucht wirt??

undefined
22-09-2004, 16:07
Das ist ja auch so Richtig ;) Syntaktische Fehler werden beim Übersetzen immer sofort ausgegeben. Der PHP Parser liest ein Script von oben nach unten von rechts nach links. Wenn nun ein Syntaxfehler kommt bricht er sofort ab.

localhost
23-09-2004, 12:41
Das ist ja auch so Richtig ;) Syntaktische Fehler werden beim Übersetzen immer sofort ausgegeben. Der PHP Parser liest ein Script von oben nach unten von rechts nach links. Wenn nun ein Syntaxfehler kommt bricht er sofort ab.

ja ok aber wenn ich keinen syntex fehler machen und z.b.

in if(3 == 6) eine kompezirte mathe aufgabe wird die dan gerechnet oder ignorit weil 3 ja nicht kleich 6 ist

hayloft_ch
23-09-2004, 14:35
Das ist dann auch kein Syntaxfehler.

Nur Syntaxfehler werden gleich beim einlesen des Scripts ausgegeben.

Ausgeführt wird gar nichts, nur der Code auf Syntaxfehler überprüft.

undefined
23-09-2004, 15:25
ja ok aber wenn ich keinen syntex fehler machen und z.b.

in if(3 == 6) eine kompezirte mathe aufgabe wird die dan gerechnet oder ignorit weil 3 ja nicht kleich 6 ist
Wenn du natürlich jetzt nur die if Klausel schreibst und nichts folgt ist es ein Syntax Fehler.

falsch

if(3 == 6)
//LEER ZEILE
foreach(range(1,9) AS $i)
{
echo $i;
}



richtig

if(3 == 6)
echo "nothing todo";

foreach(range(1,9) AS $i)
{
echo $i;
}


PS: Als Anfänger empfehle ich dir immer Klammern zu setzen ;)

quinte17
23-09-2004, 17:29
if(3 == 6) ;


kein syntaxfehler ;)

greetz

sticky bit
24-09-2004, 10:04
Dazu sag ich nur eines, sei froh, dass alles zuerst geparst wird und Syntaxfehler gleich auf kommen.
Es gibt Sprachen bei denen kommen diese nämlich tatsächlich erst auf wenn der Interpreter hinspringt und jetzt stell dir mal vor du programmierst nen grossen Brocken mit einigen Verzweigungen und Wiederholungen (bei denen es ja, wenn sie abweisend sind auch passieren kann, dass in einigen Fällen gar nicht reingesprungen wird), dann musst Du schon alleine um blosse Syntaxfehler festzustellen (bei Logikfehlern bleibt sich gleich) sicherstellen dass Du Ausführungsszenarien bildest die, zumindest alle zusammen, sicherstellen, dass in jeden Zweig mindestens einmal gesprungen wird...
Das suckt total!

hayloft_ch
24-09-2004, 17:29
Was gibt es denn für Skriptsprachen, welche dies nicht tun? Nur so aus Interesse.

sticky bit
24-09-2004, 20:21
Das woran ich v. a. gedacht habe schimpft sich "Visual FoxPro" und kommt wie der Name schon erahnen lässt von Microsoft. Ist so ne Art Weiterentwicklung von XBase mit objektorientierten Ansätzen, Windows only natürlich und GUI, findet hauptsächlich bei Datenbankanwendugen verwendung und hat so ne BASIC ähnliche Syntax in etwa. Ist eigentlich innterpretiert, aber mit Stage Code, so ähnlich wie bei Java, der Interpreter lässt sich zusammen mit dem Code als .exe zusammen kompilieren.
Und nu ist das so, dass da die IDE praktisch gleichzeitig ein Run Time Environment darstellt (so wie bei QBASIC in etwa bloss grafisch) und dass eine Syntaxprüfung schon beim editieren des Codes statt findet, die ist aber allerdings manchmal nicht so genau, bzw. fällt aus. Beim Übersetzen können Fehler zwar angezeigt werden, aber sie stoppen das Kompilieren nicht und es werden auch nur die wenigsten gefunden. Ach ja nen Präprozessor gibt es auch der ist in der Fehlerfindequalität in etwa genau so beschissen und stoppt auch nichts. Es kann Dir dann also tatsächlich passieren, dass Du irgendwo im hintersten Eck ne verzocke Struktur hast (IF nicht mit ENDIF) oder Klammerfehler bei Nested Calls oder was auch immer und das erst mal nicht merkst, erst wenn ein Szenario auftritt bei dem an diese Stelle gesprungen wird krachts recht laut. Dann sind da natürlich noch Konzeptionsfehler so dass man z. B. Variablen zwar implizit durch Zuweisung deklariren kann, wenn man aber ein Lexem welches nicht vorher imlizit oder explizit deklariert wurde irgendwo as RValue einstetzen, dann kracht das erstmal, dass er die Variable nicht kennen würde. N C Compiler z. B. würd mir das schon zur Übersetzungszeit um die Ohren hauen. Gut bei PERL z. B. ohne use strict würden einfach je nach Typ Kontext "leere" Werte angenommenda kracht dann zwar nicht kann aber unerwartete Ergebnisse liefern und man hat erst mal Null Plan was da Modus ist. Apropos Typen, dass ist in Visual FoxPro auch so ne Konzeptionslücke, zwar sind Variablen an sich typenlos, können also jeden Datentyp aufnehmen, aber es lassen sich natülich nciht alle Operatoren auf alle Datentypen anwenden und auch Funktionen können bestimmte Typen erwarten, da krachts dann auch mal alle Nasenlang weil aus irgendeinem Grund ein falscher Typ in eine Variable kommt...
Wie auch immer gibt mit sicherheit auch noch andere Sprachen bei denen so schlechte Syntaxprüfung beim parsen usus ist, mich langweilts nur, dass ich mich leider mit einer von denen aus beruflichen Gründen beschäftigen muss... ;(
Also seit froh um gescheite Parser die Euch die Syntaxfehler schon zur Übersetzungszeit raus picken! ;)

Gaert
24-09-2004, 22:25
Tja... auch ein nettes Beispiel, wenn auch aus einer anderen Ecke: Reportentwicklung mit ABAP!

Der Entwicklungszyklus ist eigentlich immer - Entwickeln, Syntaxprüfung, Syntaxprüfung + Aktivieren (ähnlich dem Kompilieren) und Ausführen...

Leider ist die Syntaxprüfung bei der Parameterübergabe an Funktionsbausteine (ähnlich einer Funktion) sehr beschränkt... wenn man aus versehen einen falschen Datentyp / Struktur / Tabelle übergibt knallt der Report (das Programm) erst während der Ausführung und kackt dann mit einem sogenannten Shortdump ab.
Das Fatale an der Sache: durch den Shortdump fliegt man gleichzeitig aus der Entwicklungsumgebung, d.h. wenn man vergessen hat zu speichern hat man gelitten... hinzu kommt, dass wenn man vor dem Ausführen immer speichert, es unter bestimmten Umständen keine Möglichkeit mehr gibt vorherige Änderungen rückgängig zu machen (Strg Z funktioniert nicht mehr).

Für Leute die "normale" Entwicklungsumgebungen gewöhnt sind mag das alles etwas merkwürdig erscheinen... für SAP Entwickler ist das leider trauriges Tagesgeschäft.

Gruß,

Gaert

localhost
26-09-2004, 13:39
Ich hab mir mal überlegt dan den ganzen code einer page in eine datei zu packen die dan 600 Kb oder so hatt aber wenn das dan alles dadrin ist nur das geholt wird was er brauch.

So könnte man viele sachen kleichzeitig machen weil man ja nur unter oder hoch srollen brauch.

Ich weis das das auch unübersichtlich werden kann aber das müsste man mal test ob das was ist.

undefined
26-09-2004, 15:35
Ich glaube eher weniger dasder PHP Parser damit Probleme hat eher du oder dein Editor ;) Bei 3000 Zeilen wird meiner ganz schön lahm vor allem wenn ich noch Autoformat einschalte :D
zudem was soll das für einen Sinn ergeben eine Datei so groß zu machen?

localhost
28-09-2004, 15:22
Ich glaube eher weniger dasder PHP Parser damit Probleme hat eher du oder dein Editor ;) Bei 3000 Zeilen wird meiner ganz schön lahm vor allem wenn ich noch Autoformat einschalte :D
zudem was soll das für einen Sinn ergeben eine Datei so groß zu machen?


Das das zu viel für den editor ist das ist bestimbt noch ein problem.
Aber wenn ich etwas grawirendes ändern will dan kann ich das doch schön über die suchfunktion suchen und überall änder oder ich bruache nicht die ganze zeit datei zu link und mit dem editr laden/aufrufen wenn ich da was ändern will.

Wenn ich mal zu viel zeit hab werde ich das mal testen müssen


:D :D Viel leicht wird das der zang grosse durchbruch in der phpprogramirung :D :D

undefined
28-09-2004, 19:12
Dann Arbeite doch auf Linux da gibt es so ein Paar schöne Tools die heißen grep und sed ;)

Gaert
28-09-2004, 23:16
Alles in ein großes Skript zu packen war noch nie ein guter Programmierstil und wird es auch nie sein... Nur mal als Stichworte: Wiederverwendbarkeit, Programmieren im Team, Versionierungssysteme, usw... alles erschwert bzw. unmöglich durch so eine Art der Programmierung.