PHP lernen: Kennt jemand gute Tutorials?

Hallo zusammen,

hat jemand ein paar Videos oder Textanleitungen (Videos sind mir lieber),
die einem näher an PHP ran bringt? Ich möchte in die Programmierung einsteigen,
da ich ein paar sehr gute Ideen habe :slight_smile:

Freue mich auf jede Antwort.

Gruß,
jacboy

schattenbaum.net/php/ kennst du?

Nein, kannte ich bisher nicht.
Danke für den Tipp!

Wenn ich mich recht erinnere ist Schattenbaum eher eines der schlechteren Tutorials.
Folgendes soll wesentlich besser sein: tut.php-quake.net/de/

[size=60]empfehlen tue ich weder das eine noch das andere, sondern gleich eine vernünftige Sprache zu lernen: Python :-P[/size]

ich würde Python nicht als “vernünftige Sprache” bezeichnen… jene wären nur Assembler,C/C++ und paar andere… aber keine Scriptsprachen :wink:
Und PHP is von Syntax her nicht mal so schlecht… [size=85](da C like :stuck_out_tongue:)[/size]

Python is natürlich ne ganz nette Sprache… vor allem 3k, aber für Webseiten würd ich dennoch PHP nehmen^^ [size=85](naja, und natürlich Javascript etc.)[/size]

Ob Schattenbaum was taugt kann ich nicht sagen. Ist schwer zu beurteilen womit ein Neueinsteiger gut lernt. Wenn man die Reviews auf Amazon zu ihrem Buch liest scheint es ganz ok zu sein, jedoch wirklich nur die Basics abzubilden.
Hat man aber erstmal die Basics wie Syntax, Variablen usw. verstanden ist man auch gut beraten einfach jede Funktion die man nicht kennt auf php.net nachzuschlagen. Dort findet man in der Seitenleiste und bei “Siehe auch” weitere Funktionen, die man evtl. gebrauchen kann.

@White-Tiger
PHP ist C-like? Das ich nicht lache. Das einzige was C und PHP gemeinsam haben sind geschweifte Klammern und das Semikolon. Und diese sind keine Qualitätsmerkmale, sondern syntaktische Ausdrücke, die nur für den Compiler/Interpreter relevant sind (wenn sie für Menschen wären, also für die Lesbarkeit, frage ich mich warum man denn noch Einrückt und so ziemlich nach jedem Semikolon auch einen Zeilenumbruch macht).
Alles andere an PHP ist anders als C.

Einige der hier angesprochenen Probleme sind sicher inzwischen “gelöst”, es zeugt aber trotzdem vom schlechten Design von PHP:
http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

@heavygale
Naja es geht glaube ich eher darum, dass Schattenbaum eher schlechte Praktiken beibringt, die man sich am besten gar nicht erst aneignen sollte.

Schon auf der ersten Seite lese ich solche Dinge und kann nur den Kopf schütteln:

Wer nicht mit richtig kodierten Dokumenten klarkommt, sollte das Programmieren am besten gleich bleiben lassen.
Die passage über Schreibrechte erfordert auch ein bisschen mehr Kenntnisse statt einfach nur chmod 777 auf alle Dateien zu machen (was ziemlich irrsinnig wäre).

[quote]<?php echo "Sch&ouml;n, dass du da bist!"; ?>[/quote]
HTML Entities… noch so ein schlechtes Verhalten, was nur von Unkenntniss über korrekte Verwendung von Kodierungen stammt. Sollte man sich gar nicht erst angewöhnen. Ich vermute mal der Autor schlägt später auch htmlentities() vor?

[quote]<?php echo "Anton fuhr um $uhrzeit nach Wien, wo er um $uhrzeit ankam."; ?>[/quote]
Konnte ich noch nie leiden. Das schaut aus wie Bash Syntax. Aber das ist denke ich Geschmackssache. Ich bevorzuge lieber vernünftige Stringformatierung, statt so ein implizieter Kontextwechsel (nenn ich das mal) oder Stringverkettungen.

[quote]<?php echo "$anton$uhrzeit$wien$uhrzeit $ankommen"; ?>[/quote]
urgh.
Und dann dauert es auch nicht lange, bis man einige “Programmierer” findet, die sowas schreiben (hab ich alles schon gesehen):

<?php echo "$variable"; ?>
Und auch der SQL krams:

[quote]<?php $eintrag = "INSERT INTO links (url, urlname, name, banner, beschreibung) VALUES ('$url', '$hpname', '$name', '$banner', '$beschreibung')"; ?>[/quote]
Es gibt zwar einen netten Hinweis:

Da das verhindern von SQL-Injections allerdings zum Grundwissen eines jeden Webentwicklers gehören sollte, ist es irgendwie Schade, dass der Autor es in einem Grundlagen Tutorial nicht mal zeigt.
Ein angemessenere DB-API (z.B. PDO - ich weiß nicht was es da für PHP noch so gibt) statt “rohe” SQL Queries zusammenzustecken, wäre sowieso besser gewesen.

Ich bin da auch nur mal drüber geflogen, vielleicht sieht es in anderen Teilen besser aus.

mfg Balmung

Offtopic:

[code]>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those![/code]

Ich finde du hast nicht recht. Sowas sollst du auch nicht machen. PHP ist eine abkürzung für process hypertext protocoll und dies protokoll soll sagen klasse -frage- uhrzeit du. Und so is.

@Balmung
Es geht nur um Syntax bei Sprachen :wink: [size=85](was eine Sprache halt aus macht)[/size] Und die von dir genannten Klammern und Semikolons haben praktischen Nutzen. [size=85](geschweifte Klammern sind einfach nur Scopes, egal wo man diese verwendet. Sie sind immer gleich und gruppieren mehrere Befehle. Und setzen wie der Name schon sagt, den Variablen Scope)[/size]
Darüber hinaus sind aber auch die Operatoren genau wie in C. Daher + - / * % & | ^ ~ ! = == != >> << || && += -= = / %= >>= <<= ^= |= &=
Auch können Strings als Array behandelt werden, was so auch nicht in allen Sprachen gegeben ist.
Funktionen werden auch quasi gleich deklariert und implementiert.
Dann die loops die gleich sind [size=85](also while, for, do)[/size], switch etc… eigl. die meisten Statements [size=85](alle von Relevanz)[/size]

Wie auch immer… ich hab mit Python und PHP gearbeitet, und für Webseiten muss es nun mal PHP sein, für Binäre Protokolle C/C++ und wenn man mal was schnell hin klatschen will, dann auch gerne mal Python. (also für nen nettes script^^)

@NusO
irgendwie sind deine Texte immer merkwürdig^^
Nur damit hier nix falsches steht: [quote=“Wikipedia”]While PHP originally stood for Personal Home Page,[size=85][5][/size] it now stands for PHP: Hypertext Preprocessor, a recursive backronym.[size=85][7][/size][/quote]

@edit: Schreib-/Denkfehler korrigiert :stuck_out_tongue: Semikolons != geschweifte Klammern

Und Python gehört zu den vorreitern der schönen Syntax (PHP nicht… und C auch nicht wirklich).

Verstehe ich nicht. Das Semikolon in C ist für das terminieren (grob aus dem englischen übersetzt) einer Anweisung. Das hat nichts mit dem Scope zu tun.
Das terminieren kann, wie man in Python und anderen Sprachen sieht, allerdings auch vom Zeilenende (line-feed/carriage-return) übernommen werden, da diese sowieso in vielen Fällen zusammen auftreten. Das Semikolon hat für den programmierer keinen zusätzlichen Wert.

Cool, dann ist Python ja auch genau wie C. :ps: (j/k)

In Python auch (weißt du ja sicherlich schon). Tatsächlich ist die Python for-schleife (was in anderen Sprachen eine for-each wäre) eine der großen Stärken von Python. Die implementation von eigenen Iteratoren ist super simpel (nun, seit PHP die Generatoren aus Python und Co. übernommen hat, ist es dort wohl auch recht simpel, vermute ich mal).

Ich kann nicht behaupten, dass irgendwas davon tatsächlich ein relevantes Qualitätsmerkmal ist.

Nur um es mal klar gesagt zu haben: Ich finde C ist auch allgemein eine syntaktisch unschöne Sprache.

Python ist eine „general purpose programming language“. Es wird gerne von anderen Anwendungen zur Erweiterung eingesetzt (fun fact: Python kann man mit C-Modulen erweitern, ist C deswegen eine Scriptsprache?), aber es gibt auch ausreichend Anwendungen die in Python geschrieben sind.
Für Webentwicklung ist Python ebenfalls bestens geeignet. Es gibt eine ganze Reihe großartiger Webframeworks (Django, Pyramid, Flask (mein favorit), bottle, web.py (reddit), uvm.), mit denen das Entwickeln wieder richtig spaß macht.

Naja, aber ich denke wirklich das ganze geht extrem Off-Topic.
Vllt, falls du lust hast, sollten wir das privat weiter führen (oder einen extra thread dafür eröffnen).
Und im endeffekt geht es natürlich nur um den persönlichen Geschmack.

mfg Balmung

>>> import antigravity

tut.php-quake.net/ ist das Tutorial, das ich empfehlen würde. Aber nicht nur Auszügen ansehen “Wie programmiere ich ein Gästebuch”, sondern von A bis Z durcharbeiten.
Darauf kann man dann über die php-Doku wunderbar aufbauen.

@Offtopic: Wenn es darum geht, sind alle gängigen Sprachen Scriptsprachen, denn irgendwas haben sie immer gemeinsam und sei es die Operatoren. Nehmt das, was ihr sicher und gut beherrscht (den Artikel vom Balmung kenne ich und man sollte ihn lesen, sonst baut man unbewusst “Sicherheitsfeatures” ein).

[quote=“White-Tiger”]ich würde Python nicht als “vernünftige Sprache” bezeichnen… jene wären nur Assembler,C/C++ und paar andere… aber keine Scriptsprachen :wink:
Und PHP is von Syntax her nicht mal so schlecht…[/quote]
Eine vernünftige Sprache definiert sich nur nach deinen Anforderungen, bzw. wie gut die Sprache dir dabei hilft deine Probleme zu lösen:
[ul]
[li]Verwende was du bereits kennst!. Alles andere bezahlt der Chef nicht, außer…[/li]
[li]Entwicklungsgeschwindigkeit (wichtig! :sunglasses:) -> Assembler kommt für die meisten Projekte nicht in Frage (Außer eventuell µC)[/li]
[li]Debug-Fähigkeiten -> in kompilierten Sprachen sowieso nur mit angehängtem Debugger. Das ist ein großes Problem in C, wenn du dein Programm aus Performance-Gründen nicht mit -g kompilieren kannst. Außerdem gibts bei vielen Sprachen gar kein Debugging auf Produktions-Plattformen (da ist sogar PHP besser).[/li]
[li]Wartbarkeit -> in C und C++ nicht integriert, aber es gibt gute Tools.[/li]
[li]Verwendbarkeit auf Ziel-Plattform -> Für iOS gibts nur Objective-C oder C++, Browser können eigentlich nur JS…[/li]
[li]Programmperformance -> Wenn die Sprache nicht die richtige Performance bringt, kann man normalerweise im Nachhinein die Implementierung wechseln. Außerdem limitiert die Programmiersprache selten (Android läuft komplett auf Java…)[/li][/ul]

Was ich eigentlich damit sagen will: Du kommst eigentlich nicht aus, was du verwenden willst. Hier auf bplaced funzt sowieso nur PHP, im Browser bist du an HTML/CSS/JS gebunden. Wenn du einen µC programmierst wirst du C nehmen, für kleine Windows-Programme C# und unter Linux wohl Python, C oder C++.
Für PC-Spiele und größere Programme wirst du ein Framework nehmen und vermutlich in C++ arbeiten.

Wenns darum geht etwas sinnvolles zu lernen, dann Haskell (oder eine andere FPL). Macht unglaublich Spaß, aber man kann nicht wirklich mit anderen zusammenarbeiten, weils einfach sehr exotisch ist…

bottles 0 = "no more bottles"
bottles 1 = "1 bottle"
bottles n = show n ++ " bottles"

verse 0   = "No more bottles of beer on the wall, no more bottles of beer.\n"
         ++ "Go to the store and buy some more, 99 bottles of beer on the wall."

verse n   = bottles n ++ " of beer on the wall, " ++ bottles n ++ " of beer.\n"
         ++ "Take one down and pass it around, " ++ bottles (n-1)
                                                 ++ " of beer on the wall.\n"

main      = mapM (putStrLn . verse) [99,98..0]

Zum Originalthema: Quakenet ist ganz gut, aber ich hab keine Ahnung obs nicht was aktuelleres gibt. Ich bin 2010 hängen geblieben^^

[quote=“michi7x7”][] für kleine Windows-Programme C# und unter Linux wohl Python, C oder C++.
[[/quote]Nö xD da nehme ich C ggf. sogar mit C++ Features, AutoIt, PHP oder Python^^
Definitiv kein C# xD Und das nicht nur weil die Sprache keine Existenzberechtigung hat^^ [size=85](niemand brauch so nen Proprietären scheiß der nicht gescheit Crossplatform is… Mono is nur ne art “Hack” und funktioniert auch nicht immer. Also entweder C# von M$ aus für Linux, oder man nimmt ne Vernünftige Alternative.)[/size]
Mich nervt es schon genug das AutoIt Windows only is :wink: Und das hat zum teil mehr Gründe^^ Scriptsprachen sollten immer Crossplatform sein.

Ich hab bis jetzt auch noch nicht mit C# gearbeitet, aber ich sehe keinen Grund warum ich es für eine Windows-App nicht verwenden sollte. Du kannst damit sehr schnell entwickeln, .NET ist viel besser als die JRE, die Integration in das OS und viele Programme steht schon und du kannst anscheinend ziemlich einfach eine C-API wrappen.
Wenn ich ehrlich bin, hab ich auch überhaupt keine Lust mehr Qt für Container, Networking, Serialisierung, Signal-System, usw. zu verwenden. In der Hinsicht verliert C++ einfach.

AutoIt verwendet doch zum größten Teil Win-API für Hotkeys, Fenster-Zugriff, Eingaben, … das wird nicht auf X11 portiert.
Mit Mono würde einiges eventuell schon funktionieren, weils eine gemeinsame API (CLI) gibt :p

Das meinte ich ja als Argument wieso AutoIt nicht Crossplatform is… bei .net ist es aber anders… da hat M$ einfach versucht mal wieder eine Art Monopol zu erstellen^^ Abgesehen davon das es für M$ nicht einfach wäre Linux offiziell zu Unterstützen^^ Naja… das die gerne Suse Linux für Server nutzen weiß man ja xD Aber das mag weniger bekannt sein, als es mit .net wäre wenn die es wirklich unterstützen würde… Allerdings könnten die es Opensource machen :stuck_out_tongue:

Nja Autoit ist aber eine Scriptsprache für Windowssysteme kann also nicht Crossplatform tauglich sein, wäre auch schlimm wenn man so rum krebsen müsste unter Linux:)

Und Python gehört zu den vorreitern der schönen Syntax (PHP nicht… und C auch nicht wirklich).

Verstehe ich nicht. Das Semikolon in C ist für das terminieren (grob aus dem englischen übersetzt) einer Anweisung. Das hat nichts mit dem Scope zu tun.
Das terminieren kann, wie man in Python und anderen Sprachen sieht, allerdings auch vom Zeilenende (line-feed/carriage-return) übernommen werden, da diese sowieso in vielen Fällen zusammen auftreten. Das Semikolon hat für den programmierer keinen zusätzlichen Wert.

Cool, dann ist Python ja auch genau wie C. :ps: (j/k)

In Python auch (weißt du ja sicherlich schon). Tatsächlich ist die Python for-schleife (was in anderen Sprachen eine for-each wäre) eine der großen Stärken von Python. Die implementation von eigenen Iteratoren ist super simpel (nun, seit PHP die Generatoren aus Python und Co. übernommen hat, ist es dort wohl auch recht simpel, vermute ich mal).

Ich kann nicht behaupten, dass irgendwas davon tatsächlich ein relevantes Qualitätsmerkmal ist.

Nur um es mal klar gesagt zu haben: Ich finde C ist auch allgemein eine syntaktisch unschöne Sprache.

Python ist eine „general purpose programming language“. Es wird gerne von anderen Anwendungen zur Erweiterung eingesetzt (fun fact: Python kann man mit C-Modulen erweitern, ist C deswegen eine Scriptsprache?), aber es gibt auch ausreichend Anwendungen die in Python geschrieben sind.
Für Webentwicklung ist Python ebenfalls bestens geeignet. Es gibt eine ganze Reihe großartiger Webframeworks (Django, Pyramid, Flask (mein favorit), bottle, web.py (reddit), uvm.), mit denen das Entwickeln wieder richtig spaß macht.

Naja, aber ich denke wirklich das ganze geht extrem Off-Topic.
Vllt, falls du lust hast, sollten wir das privat weiter führen (oder einen extra thread dafür eröffnen).
Und im endeffekt geht es natürlich nur um den persönlichen Geschmack.

mfg Balmung

>>> import antigravity

[/quote]

ich finde python scheiße da biste gezwungen richtig einzurücken, sonst bekommste dauernd fehler… Wenn dann würd ich lieber gleich eine ordentliche Sprache lernen.

In jeder Sprache musst du vernünftig einrücken und dich an die Coding Style Guides der jeweiligen Projekte halten.

Python erzwingt etwas, was sowieso schon jeder vernünftige Programmierer macht. Und konfiguriert man seinen Editor richtig, bekommt man auch keine Fehler (ich hab seit Ewigkeiten keinen Einrückungs Syntax-Fehler mehr erhalten).

Wenn dich das Einrücken nervt, hast du scheinbar noch eine Menge zu lernen.

Ich finde das erzwingen des $-Zeichens, des Semikolons und der Geschweiften Klammern in PHP (und vielen anderen Sprachen) wesentlich irritierender.

mfg Balmung

In jeder Sprache musst du vernünftig einrücken und dich an die Coding Style Guides der jeweiligen Projekte halten.

Python erzwingt etwas, was sowieso schon jeder vernünftige Programmierer macht. Und konfiguriert man seinen Editor richtig, bekommt man auch keine Fehler (ich hab seit Ewigkeiten keinen Einrückungs Syntax-Fehler mehr erhalten).

Wenn dich das Einrücken nervt, hast du scheinbar noch eine Menge zu lernen.

Ich finde das erzwingen des $-Zeichens, des Semikolons und der Geschweiften Klammern in PHP (und vielen anderen Sprachen) wesentlich irritierender.

mfg Balmung[/quote]

Wer sagt das ich nicht einrücke?? Nur ich werde gezwungen nach python logik einzurücken…
Nur das einrücken von python passt mir eben nicht… Und wenn dann geh ich doch lieber gleich auf perl statt auf python