Was unterscheidet den PHP-Anfänger vom Fortgeschrittenen?
Jeder hat mal klein angefangen. Und es gibt einige Schreibweisen, die zwar auch zum gewünschten Ergebnis führen, jedoch unprofessionell oder wesentlich kürzer zu realisieren sind.Typische Anfänger-Schreibweisen und Alternativen findet man hier.
Anfänger:
| Code: |
echo "$variable"; |
Fortgeschrittener:
| Code: |
echo $variable; |
Will man nur eine Variable ausgeben, benötigt man die Anführungsstriche nicht. Dabei ist es egal, ob $variable eine Zahl oder ein String (Textfolge) ist.
Anfänger:
| Code: |
echo "<a href=\"http://www.php.net\">PHP</a>"; |
Fortgeschrittener:
| Code: |
echo '<a href="http://www.php.net">PHP</a>'; |
Einerseits ist es bestimmt eine Sache der Optik, durch den zweiteren Text kommt man schneller durch als durch den mit \\ und / durchzogenen Text.
Insbesondere ist aber auch eine technische Sache von PHP zu beachten: Alles, was man in "..." schreibt, geht PHP nochmal durch und führt den darin enthaltenen Text aus.
Das heisst, würde in dem ersten Text noch eine Variable sein, würde sie mit ihrem Wert ersetzt werden: So wie gewollt.
Setzt man den Text in einfache Anführungsstriche, so geht PHP nicht mehr den Text durch, sondern gibt ihn aus, wie er da steht. Auch Variablen werden nicht umgesetzt, man hätte da dann $variable stehen (Um dennoch Variablen einzubauen, musst du die Ausgabe unterbrechen: echo 'sdsdsa'.$variable.'sdsdasd';).
Es ist also immer die zweite Variante vorzuziehen, da diese einfach weniger auf die Performance von PHP drückt.
Anfänger:
| Code: |
$a[0]=1;
$a[1]=2; $a[2]=3; |
Fortgeschrittener:
| Code: |
$a=array(1,2,3); |
Die Indizes starten bei array() mit 0. Deswegen braucht man nicht die komplizierte Schreibweise. Desweiteren lassen sich viele Array-Zuweisungen mit array() lösen.
Anfänger:
| Code: |
if($a>1) {
$b=2; } else { $b=3; } |
Fortgeschrittener:
| Code: |
$b=($a>1) ? 2:3; |
Was der Fortgeschrittene da macht, hat mit dem tenary-Operator zu tun, was LLCoolDanny in einem eigenen Tutorial erklärt.
Anfänger:
| Code: |
$result=mysql_query(...); |
Fortgeschrittener:
| Code: |
$result=mysql_query(...) or die
(mysql_error()); |
Der Anfänger weist PHP an, einen mysql_query auszuführen, was auch ohne Probleme funktioniert. Wenn die MySQL-Anfrage jedoch aus irgendwelchen Gründen fehlschlägt, bekommt der Anfänger nichts davon mit, weil er keine Fehlermeldung erhält.
Der Fortgeschrittene erweitert die Anfrage und weist PHP an, beim Fehlschlagen der Anfrage die weitere Ausführung des Scripts zu unterbrechen. Stattdessen wird der entsprechende Fehler ausgegeben. Dieser ist meist so ausführlich, dass man schnell den Fehler findet und ihn beheben kann, während der Anfänger verzweifelt sucht.
Anfänger:
| Code: |
<? echo $variable; ?> |
Fortgeschrittener:
| Code: |
<?= $variable; ?> |
Will man im HTML-Kontext nur eine kleine Variable ausgeben, so kann man sich das echo sparen und stattdessen direkt nach <? ein = setzen. Dies ist die verkürzte Variante für ein Echo.
Erspart etwas Tipparbeit und ist wesentlich besser für die Übersicht.
Anfänger:
| Code: |
if($a=="hallo") {
echo "hurra!"; } |
Fortgeschrittener:
| Code: |
if($a=="hallo") echo "hurra!"; |
Hat man nur eine Anweisung, die nach einer if-Abfrage ausgeführt werden soll, so kann man sich die geschweiften Klammern sparen. Sattdessen schreibt man einfach nach der Anfrage drauf los. Wie gesagt funktioniert dies nur bei einer Anweisung nach der if-Abfrage.
Anfänger:
| Code: |
$PHP_SELF; |
Fortgeschrittener:
| Code: |
$_SERVER['PHP_SELF'] |
Immer mit Umgebungsvariablen arbeiten! Eine kürzere Variante findet ihr auch unter dem Tutorial register_globals. Das darf euch aber nicht daran hindern, den Artikel auf php.net dennoch zu lesen ;)
Geschrieben von Phil Marx am 18.06.2004 (6728x gelesen)

<?php echo "blub" ?>
Vor dem ?> muss kein semikolon geschrieben werden...
weitere anfänger sachen: $zahl = $zahl + 1;
abgekürzt durch $zahl++;
(bzw $zahl--;)
Vor dem ?> muss kein semikolon geschrieben werden...
weitere anfänger sachen: $zahl = $zahl + 1;
abgekürzt durch $zahl++;
(bzw $zahl--;)
Geschrieben von Chatfix
ich programmiere irgendwie mit so einer Mischung aus allem :)
Geschrieben von darealplaya
2 Sachen sind Quatsch:
1. if($a=="hallo") echo "hurra!";
Das ist nach dem PEAR-Codingstandard nicht erlaubt und außerdem gibt es dort im Zusammenhang mit include() Probleme.
2. <?=$variable; ?> das machen die Profis erst rech so:
<?php echo $variable; ?> da Profis wollen, dass es für alle Versionen und Server kompatibel ist.
mfG, LCD
1. if($a=="hallo") echo "hurra!";
Das ist nach dem PEAR-Codingstandard nicht erlaubt und außerdem gibt es dort im Zusammenhang mit include() Probleme.
2. <?=$variable; ?> das machen die Profis erst rech so:
<?php echo $variable; ?> da Profis wollen, dass es für alle Versionen und Server kompatibel ist.
mfG, LCD
Geschrieben von LLCoolDannY
Naja einige Dinge die hier als "Profi" deklariert sind mach ich als Anfänger dennoch so!
Geschrieben von DiWoWo
einfach der Reihe nach:
Fall 1: korrekt
Fall 2: Gegenteil ist eher der Fall, den Entwerten wirkt profimäßiger, als sich mit einem ' aus der Affäre zu ziehen - ich ging dabei genau den umgekehrten Weg.
Fall 3: nicht unbedingt - das hängt jeweils vom Fall ab, in der dargestellten Form trifft es zu
Fall 4: korrekt
Fall 5: falsch, ein Fortgeschrittener würgt sein Skript nicht mit die() oder exit() ab - habe ich als Anfänger aber gemacht. Ein Fortgeschrittener fängt den Fehler ab und wirft eine eigene Fehlermeldung aus.
Fall 6 : korrekt
Fall 7: weder noch, auf die Klammerung kann man verzichten, aber man haut einen Zeilenumbruch hinein und rückt ein
Fall 8: korrekt
gruß
rené
Fall 1: korrekt
Fall 2: Gegenteil ist eher der Fall, den Entwerten wirkt profimäßiger, als sich mit einem ' aus der Affäre zu ziehen - ich ging dabei genau den umgekehrten Weg.
Fall 3: nicht unbedingt - das hängt jeweils vom Fall ab, in der dargestellten Form trifft es zu
Fall 4: korrekt
Fall 5: falsch, ein Fortgeschrittener würgt sein Skript nicht mit die() oder exit() ab - habe ich als Anfänger aber gemacht. Ein Fortgeschrittener fängt den Fehler ab und wirft eine eigene Fehlermeldung aus.
Fall 6 : korrekt
Fall 7: weder noch, auf die Klammerung kann man verzichten, aber man haut einen Zeilenumbruch hinein und rückt ein
Fall 8: korrekt
gruß
rené
Geschrieben von René
@6 -> ok, ich korrigiere ...
und bitte Zeilenwechsel beim Kommentieren erlauben ;-)
und bitte Zeilenwechsel beim Kommentieren erlauben ;-)
Geschrieben von René
Um mich mal zu verteidigen:
Bis auf die letzten 3 kommen alle von zend.com...
Die anderen 3 kamen spontan als Erweiterung vom michi *schuld abschieb*
Bis auf die letzten 3 kommen alle von zend.com...
Die anderen 3 kamen spontan als Erweiterung vom michi *schuld abschieb*
Geschrieben von Phil Marx
Der Zeilenumbruch muss irgendwie kauputt gegangen sein..
Nun funzt er wieder :D
Nun funzt er wieder :D
Geschrieben von Phil Marx
Thanks@<br>-Tag ;-)
Zu den Fällen: wenn ich etwas auf meiner Seite inhaltlich übernehme, dann `klaue´ ich es nicht, sondern versehe es eher so, wie ich denke, daß es richtig ist ... sich nachher rausreden gibt`s da nicht ;-)
ansonsten ist eigentlich die Diskussion auch sinnlos, denn jeder hat seinen Programmierstil, das ist wie eine Handschrift - und da sollte man nicht bestimmte Formen als Anfänger und bestimmte als Fortgeschrittene einstufen ...
so lange der Code lesbar bleibt, und das Programm der Anforderung entspricht, ist es OK!
Zu den Fällen: wenn ich etwas auf meiner Seite inhaltlich übernehme, dann `klaue´ ich es nicht, sondern versehe es eher so, wie ich denke, daß es richtig ist ... sich nachher rausreden gibt`s da nicht ;-)
ansonsten ist eigentlich die Diskussion auch sinnlos, denn jeder hat seinen Programmierstil, das ist wie eine Handschrift - und da sollte man nicht bestimmte Formen als Anfänger und bestimmte als Fortgeschrittene einstufen ...
so lange der Code lesbar bleibt, und das Programm der Anforderung entspricht, ist es OK!
Geschrieben von René
Für Fall 8 habe ich noch eine bessere Variante gefunden:
$file = (isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $PHP_SELF);
diese unterscheiedet, ob die vorhandene PHP-Version schon die $_SERVER-Variablen kennt und nimmt diese vorzugsweise ...
$file = (isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $PHP_SELF);
diese unterscheiedet, ob die vorhandene PHP-Version schon die $_SERVER-Variablen kennt und nimmt diese vorzugsweise ...
Geschrieben von René
@Rene und dem Kommentar mit dem Klauen
Bei zend.com waren die reinen Codeschnipsel, die habe ich schon teilweise mit eigenen, besseren Möglichkeiten ausgebaut sowie die Begründungen dahinter geschrieben...
Es ist inspiriert, aber keineswegs geklaut!
Bei zend.com waren die reinen Codeschnipsel, die habe ich schon teilweise mit eigenen, besseren Möglichkeiten ausgebaut sowie die Begründungen dahinter geschrieben...
Es ist inspiriert, aber keineswegs geklaut!
Geschrieben von Phil Marx
Nicht einverstanden mit
Anfänger:
if($a>1) {
$b=2;
} else {
$b=3;
}
Fortgeschrittener:
$b=($a>1) ? 2:3;
Ersteres ist - fuer die Wartung - also auch bessere Lesbarkeit - eindeutig vorzuziehen, auch wenn das Zweite kuerzer ist. Letzteres hat eher einen Hauch von Kunst, statt von Professionalitaet ;)
Anfänger:
if($a>1) {
$b=2;
} else {
$b=3;
}
Fortgeschrittener:
$b=($a>1) ? 2:3;
Ersteres ist - fuer die Wartung - also auch bessere Lesbarkeit - eindeutig vorzuziehen, auch wenn das Zweite kuerzer ist. Letzteres hat eher einen Hauch von Kunst, statt von Professionalitaet ;)
Geschrieben von Airport1
Ich finde dieses Tutorial äusserst fragwürdig. Hier wird dem Anfänger suggiert, es sei professioneller, beim Schreiben des Codes von Sonderregelungen Gebrauch zu machen. In der professionellen Praxis sieht es meiner Erfahrung nach aber reichlich anders aus. Umso mehr solcher Tricks man beim Codieren gebraucht, umso schwieriger wird es für einen anderen Programmierer, wenn er mit dem Code arbeiten soll. Da wirkt es dann eher unprofessionell, von solchen Sachen Gebrauch zu machen. Auch vor dem Weglassen der geschweiften Klammern nach der IF-Abfrage würde ich eigentlich niemandem raten, denn wem ist es nicht schonmal passiert, dass er um 2 Uhr morgens immer noch vor seinem Code sitzt und in seiner Schlaftrunkenheit innerhalb einer recht komplexen Struktur bei einer solchen IF-Abfrage einfach noch eine zweite Anweisung anhängt und sich dann fragt, weshalb das Programm nicht mehr läuft?
Code soll einfach, sauber, verständlich und gut überschaubar sein. Das ist es, was in meinen Augen professionellen Code ausmacht. Aus anderen Augen mag das anders wirken. Dementsprechend sollte man in diesem Tutorial aber auch nicht von "Anfängern" und "Profis" sprechen, sondern von verschiedenen Varianten, bei welchen man eventuell auch Vor- und Nachteile nennen sollte.
Aber so, wie das Tutorial hier dargebracht wurde, halte ich es nicht für allzu sinnvoll.
Code soll einfach, sauber, verständlich und gut überschaubar sein. Das ist es, was in meinen Augen professionellen Code ausmacht. Aus anderen Augen mag das anders wirken. Dementsprechend sollte man in diesem Tutorial aber auch nicht von "Anfängern" und "Profis" sprechen, sondern von verschiedenen Varianten, bei welchen man eventuell auch Vor- und Nachteile nennen sollte.
Aber so, wie das Tutorial hier dargebracht wurde, halte ich es nicht für allzu sinnvoll.
Geschrieben von SSB-CH
