PHP und Programmierstil

Über geschmack läst sich bekanntlich streiten, und genau das ist es was dieses Thread hier tut.

Ob PHP nun eine gute oder miserable programmiersprache ist hängt ganz alleine vom standpunkt des Betrachters ab. Gehst du mal von der Seite eines Leihen oder Hobby programmierer heran der möglichst schnell möglichst einfach gute ergebnisse haben will, so ist PHP sicher von Vorteil.
Und PHP wurde ja ursprünglich auch gar nicht entwickelt um im Komerziellen berech Anwengung zu finden. Und dort wird ja vermehrt ASP.NET und JSP eingesetzt. Viele Firmen haben auch schon komplett die Finger von solen sachen gelassen und programmieren wieder mit dem guten alten C.
z.B. kann ich mir nicht vorstellen das e-bay mit PHP, ASP oder JSP arbeitet. nein das sind SAPI applikationen!

und wenn jemand JAVA als eine produktionsstätte schlechten Codes bezeichnet, dann soll er erstmal JAVA lernen. Man kann nicht über etwas reden von dem man keine ahnung hatt.

Java ist mit seiner Objektorientierung so aufgebaut, das man gezwungen ist sauberen code zu Programmieren. Vergiss bei einem dateizugriff das EH und du kannst die klasse nichtmal Kompilieren!

Außerdem kann man auch in PHP sauber Programmieren...

ein error_reporting(E_ALL); sollte klarheit schaffen. Dann regt er sich sogar über nicht deklarierte variablen auf!
 
PHP als Sprache kann man objektiv nicht schlechtmachen. Das Variablenhandling ist dürftig, zugegeben, ASP ist meistens schneller, auch zugegeben - aber dafür hat PHP den Rückhalt einer immens großen Community mit all den bekannten Vor- und leider auch Nachteilen. Das man mit PHP eine ganze Menge machen kann, wird hier niemand bestreiten.

Christian hat hier die extreme Zunahme von Online-Gamern angesprochen - das ist für PHP ein Rückschlag der übelsten Sorte. Viele von diesen Clans - ob sie jahrelang oder nur ein paar Tage existieren spielt dabei gar keine Rolle - "brauchen" eine Homepage mit einem "Warscript", einem "Gbook", einem "Poll" - und was weiß ich noch alles. Viele allerdings wollen keine frei verfügbaren Scripte verwenden, weil da ja ein Copyright-Hinweis drin ist. Also versuchen die Clanleute selbst etwas zusammenzufummeln oder "engagieren" einen Kollegen, von dem sie mal gehört haben er hätte Ahnung.

Und genau diese Leute sind es dann, die den erwähnten Katastropencode fabrizieren - und zwar entweder weil sie keine Ahnung von PHP haben ("Ich will doch nur mal eben einen Counter basteln...") oder aber schlicht und ergreifend den Sinn und Zweck guten Codes nicht einsehen ("Wozu - funktioniert doch auch so..."). Wegen diesen armseligen "Codern" eine ganze Sprache zu verurteilen ist irgendwie nicht der wahre Jakob, finde ich.

Ich bin mittlerweile seit 4 Jahren "PHPler", anders als die meisten Vorredner kann ich weder J2EE noch Python oder C# / C++ und ich lerne gerade ASP (ich muß dazu sagen daß ich ein komplett anderes Fach studiere...). Trotzdem kann ich von mir behaupten, daß ich sauberen Code schreibe - und zwar schon immer.
 
melmager hat gesagt.:
Man kann auch über andere Sprache lästern :)
JAVA: Eine Sprache die schon für einfache Stringmanipulation eine eigene Classe braucht und bei
Dynamische Datenstruktuen von hinten durch die Brust ins Auge arbeitet. Und der Anspruch
Systemunabhängig zu sein ist immer noch mehr Wunsch wie Wirklichkeit.

Nein das kann mann so nicht stehen lassen. Stringmanipulationen sind logischerweise in Klassen gekapselt da Java bis auf int long boolean double float alles ObjectOrientiert kapselt.
Das haben OOP Sprachen ansich, das macht Ruby , .net genauso und ist damit guter OOP Programmierstil.

melmager hat gesagt.:
Und ob eine Sprache OOP ist oder nicht ist nach meiner Meinug zweitrangig.
Meist wird das OOP Prinzip von den Sprachen (z.b Java eher eingeschränkt) und es verleitet
Wo bei Java eingeschränkt? Ich hoffe du verwechselst jetzt nicht Java Script mit Java.
Ansonsten hätte ich gern ein Beispiel wo du " OOP bei Java eingeschränkt " siehst.

die Programmierer dazu eine miserable Documentation für ihre Classen abzuliefern
wobei ich wider bei PHP bin:
PHP ist immer noch die bestdocumetierte Sprache die es gibt.
Sorry aber die bestdokumentierte Sprache ist immer noch C.


Matthias Kannengiesser hat gesagt.:
Eines steht für mich jedoch fest - bevor ich mir ständig um den Programmierstil sorgen mache verdiene ich doch lieber Geld mit dem was mir zur Verfügung steht. Ein Handwerker wird sicher dass eine oder ander mal über sein Werkzeug herziehen, aber er wird nicht drum herum kommen es einzusetzen, wenn er seinen Lebensunterhalt bestreiten will.
Da hast du recht Matthias, jede Sprache hat ihren einsatzzweck und den scheint sie zu erfüllen, sonst könnte sie sich nicht am Markt behaupten.
Dennoch geht es hier hauptsächlich um eine Sprache um einzusteigen, Programmieren zu lernen. Aber dort gibt es einige Sprachen die in ihrem Einsatzgebiet zwar nützlich sind, aber als Lehrmittel dennoch nicht geeignet sind.

chibisuke hat gesagt.:
Ob PHP nun eine gute oder miserable programmiersprache ist hängt ganz alleine vom standpunkt des Betrachters ab. Gehst du mal von der Seite eines Leihen oder Hobby programmierer heran der möglichst schnell möglichst einfach gute ergebnisse haben will, so ist PHP sicher von Vorteil.
Und PHP wurde ja ursprünglich auch gar nicht entwickelt um im Komerziellen berech Anwengung zu finden. Und dort wird ja vermehrt ASP.NET und JSP eingesetzt. Viele Firmen haben auch schon komplett die Finger von solen sachen gelassen und programmieren wieder mit dem guten alten C.
z.B. kann ich mir nicht vorstellen das e-bay mit PHP, ASP oder JSP arbeitet. nein das sind SAPI applikationen!
Bei Ebay ist es eine SAPI Applikation, Amazon ist J2EE.
PHP bietet eine Menge, und der einsatzraum der Sprache gewinnt an bedeutung. Je mehr eine Applikation von der dynamischen Webseite hin zur
Webapplikation geht, umso mehr verliert PHP an bedeutung. Beim Programmcode von Ebay wird wohl wenn es hochkommt 0,1 Prozent des Programmcodes noch mit Generierung der Webseite zu tun, weshalb sich hier auch eine SAPI Lösung anbietet.


chibisuke hat gesagt.:
Außerdem kann man auch in PHP sauber Programmieren...
Da hast du auf jedenfall recht, letztendlich kommt es immer auf denjenigen an der den Code plant und schreibt.
Aber als Anfänger kann mann nicht sauberen Code schreiben, das kommt mit der Zeit und der Erfahrung welche eigene Vorteile dieser Aufwand bringt.
Manche Sprachen erlauben dem Anfänger auch mit schlechtem Code Ergebnisse zu erzielen und trainieren diesen schlechten Stil an.
Hier sind einige Sprachen dann doch eher gnadenlos und verlangen das eine oder andere, oder melden einen Kompilierungsfehler.
Ich will dort wieder das Exception handling von Java aufführen.
Beispiel SQLException.

Jede Datenbank Operation kann eine SQLException werfen, in Java wird mann dazu gezwungen irgendwas mit dieser Exception anzufangen. Sie zu behandeln, da ist mann gezwungen sich gedanken darüber zu machen:
Gebe ich die Fehlermeldung auf stdout aus? Leite ich auf eine Fehlerseite um (Servlets) ? Logge ich diese Fehlermeldung? Oder versuche ich in einer betreffenden Fehlerklasse diese Operation zu wiederholen?
usw.
Bei PHP wird von Anfängern immer davon ausgegangen das mysql_query schon funktionieren wird wenn er einmal funktioniert hat.
 
Ich Programmiere auch schon lange verschiede Programmiersprachen, darunter C++, VB, php ua.
Ich sehe die Problematik folgendermaßen:
PHP ist eine Scriptsprache, wogegen C++ eine Programmiersprache ist. (Ich hoffe dass ich damit richtig bin)

Eine Scriptsprache soll einfache Programmieraufgaben lösen, eine Programmiersprache auch komplexe.

Deshalb kann ich dem ersteller dieser Seite nicht 100% recht geben. Ich finde c oder pascal ein guter Einstieg in die Programmierung, aber php ist meiner Meinung nach eine ander Schiene.

webfreak
 
Hi,

sehr interessantes Thema, auch wenn ich selbst kein PHPler und auch kein
echter "Coder" bin. Besonders die Beiträge von Christian und Matze finde ich
sehr gut und differenziert.

Für mich ist die Anwendung einer Programmier- oder Skriptsprache ein Mittel,
um einen ganz bestimmten Zweck zu erfüllen. Dabei muss ich zugeben, dass
für mich der ökonomischste Weg zum Ziel der Beste ist, da ich mit meinen
programmiertechnischen Ausdünstungen Geld verdienen will.

Sicherlich geht mir so manches an Möglichkeiten bzw. Fähigkeiten ab, was
ich von Zeit zu Zeit auch sinnvoll einsetzen könnte. Da zieh ich mir den Schuh
gerne an, dass ich mich nicht ausreichend tief mit der Materie beschäftige.
Nur, wenn man auf verschiedenen Gebieten gefordert ist, dann muss man eben
den praktikabelsten Weg suchen und finden, um die Sache rund realisieren zu
können.

Was ich damit sagen möchte ist, dass ein reines Spezialistentum sicherlich
auf dem einen Gebiet massive Vorteile bringt, aber dafür eben auf anderen
Gebieten Lücken erkennen lässt.
Es wird immer die "Freaks" und "Spezis" geben, und das mit voller Berechtigung.
Aber es wird auch immer diejenigen geben, die eine breitere Ausrichtung haben
und somit die Tiefe im Einzelnen nicht haben.
Eine Programmier- oder Skriptsprache, die beiden Gruppen offensteht und
sowohl dem Anfänger, als auch dem Profi Erfolge ermöglicht ist die Sprache,
die eine hohe Akzeptanz findet. Und das ist in meinen Augen nie ein Mangel,
sondern ein großes Plus.

Mein Haupteinsatzgebiet von Programmiersprachen ist Macromedia Director
mit seinem "Lingo". Diese Sprache kommt vollkommen ohne Typdeklaration
bei Variablen aus. Ein grober Mangel in den Augen vieler "Coder", mag sein.
Bezogen auf die Anwendung ist es mir aber in den mittlerweile fast 10 Jahren
Erfahrung noch nie sauer aufgestoßen. Naja, vielleicht mach ich ja was falsch? ;)

Gruß
Martin
 
Wo bei Java eingeschränkt? Ich hoffe du verwechselst jetzt nicht Java Script mit Java.

Nun es ist nur einfache Vererbung möglich - wenn das nicht eingeschränkt ist -
Ganz davon ab das ich immer noch nicht verstanden habe warum es guter OOP Style ist nur Functionen zu expotieren obwohl es die Sprache es auch bei Variablen zulässt.
Der einzige Grund liegt wohl darin, das ich Variablen nach aussen hin nicht schreibschützen kann.
Selbst in einer so einfachen Sprache wie JAVASCRIPT gibt es Variablen auf die ich nur lesend zugreifen kann. Aber selbst wenn ich exportierte Variablen überschreiben kann warum sollte ich das als Programmierer tun?
$_GET['eingabe']= "neuer wert";
Ich weiss nicht ob das geht (warscheinlich) in PHP aber warum sollte ich das als Progger tun?
Warum haben OOP Sprachen den Anspruch den Coder vor Blödsinn zu schützen - mehr Sicherheit bedeutet auch immer mehr Einschränkungen.

Stringmanipulationen sind logischerweise in Klassen gekapselt da Java bis auf int long boolean double float alles ObjectOrientiert kapselt.

und was ist daran logisch ?
Nimm z.B. mal eine Funktion wie Explode In PHP - ein Gegenstück in Java zu schreiben ist eine grösseres Stück Code.
Oder ganz banal auf einzelnen Zeichen im String zugreifen. Ein immenser Aufwand
gegen über sowas: echo $meinstring[4];
Und wenn das wirklich OOP Pflicht ist nach meiner Meinung nach elematare Sachen in Klassen zu verpacken dann steigert das eher meine Abneigung gegen OOP
Lästermode on:
Da ist es doch kein Wunder das es noch keinen Texeditor gibt der in Java geschrieben wurde - es
ist schlicht und einfach zu aufwendig.
Lästermode off

Sorry aber die bestdokumentierte Sprache ist immer noch C.

Schlicht und einfach falsch - aber ev reden wir auch aneinder vorbei in meinem Fall rede ich von den nötigen Classen / Bibliotheken ohne die man ja nix anfangen kann - wenn du eine entsprechende Webseite weisst die ähnlich ausgebaut ist wie php.net mit code beispielen
bin ich ein dankbarer Abnehmer. z.b für die STL bisher habe ich noch nix komplettes gefunden.
Im Moment arbeite ich hier mit zwei Mart + Technik Bücher und klaube mir die entsprechenden Infos zu sammen

Mittlerweile mache ich in PHP sogar Sachen für die PHP gar nicht gedacht war :)
 
melmager hat gesagt.:
Nun es ist nur einfache Vererbung möglich - wenn das nicht eingeschränkt ist -
Ach was? Mehrfachvererbung gehöhrt bei JAVA zum standart und das schon von anfang an :mad:

Ganz davon ab das ich immer noch nicht verstanden habe warum es guter OOP Style ist nur Functionen zu expotieren obwohl es die Sprache es auch bei Variablen zulässt.
Der einzige Grund liegt wohl darin, das ich Variablen nach aussen hin nicht schreibschützen kann.
Selbst in einer so einfachen Sprache wie JAVASCRIPT gibt es Variablen auf die ich nur lesend zugreifen kann. Aber selbst wenn ich exportierte Variablen überschreiben kann warum sollte ich das als Programmierer tun?
Das macht man damit andere programmierer die eine klasse von jemand anderem benutzen nicht versehndlich einer variable einen wert zuweisen obwohl das nicht gewünscht ist.
Das macht z.B. bei JavaBeans sinn, weil da werden klassen von ganz anderen usern weiter benutzt, die vieleicht auch n wenig experimentierfreudig sind und dann total ungewolte ergebnisse erziehlen.
Es ist in keiner einzigen sprache möglich variablen schreibzuschützen, so das die eigene klasse immer noch drauf schreiben kann ohne das man den schreibschutz zeitweilig aufheben muss. Es geht nicht siehs ein.

$_GET['eingabe']= "neuer wert";
Ich weiss nicht ob das geht (warscheinlich) in PHP aber warum sollte ich das als Progger tun?
Warum haben OOP Sprachen den Anspruch den Coder vor Blödsinn zu schützen - mehr Sicherheit bedeutet auch immer mehr Einschränkungen.

Weil nicht jeder programmierer den sinn hinter einer beschrenkung erkennt und diese auch einhällt, daher wird es durch OOP ermöglicht diese beschränkung durchzusetzen. was eben z.B. bei weitergabe von code, oder bei verwendung von code durch einen anderen aus dem programmierteam sonst sehr leicht zu fehlern führt, die teilweise tagelanges debugging erfordern.

Aber das kann nur jemand nachvolziehen der selbst schon 3 nächte in folge vorm PC gesessen ist um einen fehler zu finden der durch fehlende angabe einer zugriffsbeschrenkung verursacht wurde.

Nimm z.B. mal eine Funktion wie Explode In PHP - ein Gegenstück in Java zu schreiben ist eine grösseres Stück Code.
Oder ganz banal auf einzelnen Zeichen im String zugreifen. Ein immenser Aufwand
gegen über sowas: echo $meinstring[4];
Und wenn das wirklich OOP Pflicht ist nach meiner Meinung nach elematare Sachen in Klassen zu verpacken dann steigert das eher meine Abneigung gegen OOP

DER PHP CODE IST FALSCH! die eckigen klammern sind als array operatoren zu verwenden, sie sind seit version 4.1 glaub ich NICHT MEHR ALS STRING INDEX OPERATOREN ZU VERWENDEN. dafür benutzt man geschwungene klammern. :RTFM:

Jemand der nichtmal PHP code sauber verfassen kann ohne gültige standarts zu brechen will mit was über OOP erzählen? na das haut doch dem Fass den Boden raus.

Ich kann in Java meine strings genau so handeln wie in PHP ein .toChar und ich hab mein char-array über das ich mit index operatoren zugreifen kann. ein ECHTES ARRAY, und keines was mit irgendwelchen fake operatoren benutzt wird.

Lästermode on:
Da ist es doch kein Wunder das es noch keinen Texeditor gibt der in Java geschrieben wurde - es
ist schlicht und einfach zu aufwendig.
Lästermode off

NICHTMAL DAS WEIß ER. es gibt Duzende Texteditoren.. sogar formatierungen und alles mögliche teilweise... Ja sogar die ZEND IDE. eine der besten PHP IDEs wurde in JAVA geschrieben. auch die Borland JBuilder IDE ist in JAVA geschrieben.
Du kennst du docher Kazaa? oder Morpheus? wenn ich mich nicht irre sind die auch in JAVA und zwar in J++ geschrieben.

Schlicht und einfach falsch - aber ev reden wir auch aneinder vorbei in meinem Fall rede ich von den nötigen Classen / Bibliotheken ohne die man ja nix anfangen kann - wenn du eine entsprechende Webseite weisst die ähnlich ausgebaut ist wie php.net mit code beispielen
bin ich ein dankbarer Abnehmer. z.b für die STL bisher habe ich noch nix komplettes gefunden.
Im Moment arbeite ich hier mit zwei Mart + Technik Bücher und klaube mir die entsprechenden Infos zu sammen

Mittlerweile mache ich in PHP sogar Sachen für die PHP gar nicht gedacht war :)
ROFL PHP und KOMPLETT? ich glaub ich fall gleich vom Hocker. von PHP sind vieleicht 80% der funktionern, und 30% der Klassen überhautp DOKUMENTIERT das muste dir mal vorstellen! 30% is sogar noch übertrieben... guck dir mal PEAR an! fast überhaupt keine dokumentationen dazu. einzig und alleine der source dient als Doku. und dann behaupte PHP ist gut dokumentiert?

Echt Solchen Schwachsinn muss ich mir echt nich rein ziehen, kann ich drauf verzichten.
 
melmager hat gesagt.:
Nun es ist nur einfache Vererbung möglich - wenn das nicht eingeschränkt ist -
Ganz davon ab das ich immer noch nicht verstanden habe warum es guter OOP Style ist nur Functionen zu expotieren obwohl es die Sprache es auch bei Variablen zulässt.
Der einzige Grund liegt wohl darin, das ich Variablen nach aussen hin nicht schreibschützen kann.
Selbst in einer so einfachen Sprache wie JAVASCRIPT gibt es Variablen auf die ich nur lesend zugreifen kann. Aber selbst wenn ich exportierte Variablen überschreiben kann warum sollte ich das als Programmierer tun?
$_GET['eingabe']= "neuer wert";
Ich weiss nicht ob das geht (warscheinlich) in PHP aber warum sollte ich das als Progger tun?
Warum haben OOP Sprachen den Anspruch den Coder vor Blödsinn zu schützen - mehr Sicherheit bedeutet auch immer mehr Einschränkungen.

Der Sinn von Properties ist das mann einzig und allein ein Interface anbieten kann das sich nicht ändert und gleichzeit Schreibrecht auf Membervariablen bieten kann.
So ist es möglich Wertveränderrungen anzubieten und diese noch mit Programmlogic zu verknüpfen.

melmager hat gesagt.:
und was ist daran logisch ?
Nimm z.B. mal eine Funktion wie Explode In PHP - ein Gegenstück in Java zu schreiben ist eine grösseres Stück Code.
nö ist es nicht:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split (java.lang.String)

Code:
 String a = "ja, das, ist, kommagetrennt";
  String teile[] = a.split(",");

melmager hat gesagt.:
Oder ganz banal auf einzelnen Zeichen im String zugreifen. Ein immenser Aufwand
gegen über sowas: echo $meinstring[4];

Code:
   String a = "ein Wort";
    char c = a.charAt(0);

genauso lang.

melmager hat gesagt.:
Und wenn das wirklich OOP Pflicht ist nach meiner Meinung nach elematare Sachen in Klassen zu verpacken dann steigert das eher meine Abneigung gegen OOP
Das steigert die Produktivität.

melmager hat gesagt.:
Da ist es doch kein Wunder das es noch keinen Texeditor gibt der in Java geschrieben wurde - es
ist schlicht und einfach zu aufwendig.
jbuilder, jedit, IDEA, eclipse, Oracle Application Developer, WSAD und und und
mit Texteditoren in Java könnte ich dich erschlagen.


Schlicht und einfach falsch - aber ev reden wir auch aneinder vorbei in meinem Fall rede ich von den nötigen Classen / Bibliotheken ohne die man ja nix anfangen kann - wenn du eine entsprechende Webseite weisst die ähnlich ausgebaut ist wie php.net mit code beispielen

nein vollkommen richtig, jede C Funktion hat eine eigene Manual Page im Unix system. Einfach mal man printf eingeben. Mann braucht nichtmal eine Internetverbindung.
Unter Windows gibt es MSDN, oder auch die Borlandhilfe usw. Da stecken mehr Codebeispiele drinne wie auf php.net.
Genauso Java mann schaue nur auf:
http://java.sun.com/j2se/1.4.2/docs/api/
http://www.ibm.com/developer/java
java.sun.com
usw.

bin ich ein dankbarer Abnehmer. z.b für die STL bisher habe ich noch nix komplettes gefunden.
Im Moment arbeite ich hier mit zwei Mart + Technik Bücher und klaube mir die entsprechenden Infos zu sammen

Mittlerweile mache ich in PHP sogar Sachen für die PHP gar nicht gedacht war :)
STL habe ich als Manpage, bzw dort.
 
-

DER PHP CODE IST FALSCH! die eckigen klammern sind als array operatoren zu verwenden, sie sind seit version 4.1 glaub ich NICHT MEHR ALS STRING INDEX OPERATOREN ZU VERWENDEN. dafür benutzt man geschwungene klammern.

Jemand der nichtmal PHP code sauber verfassen kann ohne gültige standarts zu brechen will mit was über OOP erzählen? na das haut doch dem Fass den Boden raus.
Das wäre mir aber neu, dass ein String neuerdings kein Array mehr darstellt. Warum sollte man also auf die eckigen Klammern verzichten, wenn man mit einem Array arbeitet? Das ist so in jeder mir bekannten Sprache, außer Tcl vielleicht.

Außerdem möchte ich dich bitten, sachlich bei der Diskussion zu bleiben, da du mich ansonsten nötigst, deine Beiträge zu bearbeiten, aber da ich das nicht möchte, einfach auf persönliche Bemerkungen verzichten ;)
 

Neue Beiträge

Zurück