PHP? Bitte nicht!

Das PHP hässlich ist würde ich nicht gerade sagen, ich finde eine Syntax die stark an Basic oder ähnliches erinnert viel hässlicher, die C ähnlich Syntax von PHP find ich viel angenehmer zu schreiben ;-]

Sicherheits technisch ist PHP doch auch nicht wirklich "gefährlich" wenn man es richtig handhabt und konfiguriert. Mit eigenen Librarys kann man PHP dann auch noch erweitern mit eigenen Funktionen.

OOP ist wirklich nicht die Stärke von PHP aber wo braucht man das schon wirklich bei einer Website. Einfache Klassen kann man auch mit PHP4 erzeugen, zum einfachen handlen eines Warenkorbs etc. reicht es vollkommen aus. Wenn man Objekte erstellen will die nur bedingten Zugriff auf Attribute und Funktionen haben muss man halt PHP5 verwenden.

Die Namensgebung ist für wahr nicht berauschend, ein großer Nachteil von PHP aber nicht wirklich schwerwiegend wie ich finde. Mit php.net hat man eine perfekte Plattfom in der man ohne lange zu suchen genau das findet was man braucht.
 
MasterEvil hat gesagt.:
Das PHP hässlich ist würde ich nicht gerade sagen, ich finde eine Syntax die stark an Basic oder ähnliches erinnert viel hässlicher, die C ähnlich Syntax von PHP find ich viel angenehmer zu schreiben ;-]

Python und Ruby 's Syntax hat nun gar nichts mit Basic zu tun.

Python:
class Daemonizer:

    def main(self, args=None):
        self.options = ZDRunOptions()
        self.options.realize(args)
        self.logger = self.options.logger
        self.set_uid()
        self.run()

    def set_uid(self):
        if self.options.uid is None:
            return
        uid = os.geteuid()
        if uid != 0 and uid != self.options.uid:
            self.options.usage("only root can use -u USER to change users")
        os.setgid(self.options.gid)
        os.setuid(self.options.uid)

    def run(self):
        self.proc = Subprocess(self.options)
        self.opensocket()
        try:
            self.setsignals()
            if self.options.daemon:
                self.daemonize()
            self.runforever()
        finally:
            try:
                os.unlink(self.options.sockname)
            except os.error:
                pass

    mastersocket = None
    commandsocket = None

    def opensocket(self):
        sockname = self.options.sockname
        tempname = "%s.%d" % (sockname, os.getpid())
        self.unlink_quietly(tempname)
        while 1:
            sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
            try:
                sock.bind(tempname)
                os.chmod(tempname, 0700)
                try:
                    os.link(tempname, sockname)
                    break
                except os.error:
                    # Lock contention, or stale socket.
                    self.checkopen()
                    # Stale socket -- delete, sleep, and try again.
                    msg = "Unlinking stale socket %s; sleep 1" % sockname
                    sys.stderr.write(msg + "\n")
                    self.logger.warn(msg)
                    self.unlink_quietly(sockname)
                    sock.close()
                    time.sleep(1)
                    continue
            finally:
                self.unlink_quietly(tempname)
        sock.listen(1)
        sock.setblocking(0)
        self.mastersocket = sock

    def unlink_quietly(self, filename):
        try:
            os.unlink(filename)
        except os.error:
            pass

    def checkopen(self):
        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        try:
            s.connect(self.options.sockname)
            s.send("status\n")
            data = s.recv(1000)
            s.close()
        except socket.error:
            pass
        else:
            while data.endswith("\n"):
                data = data[:-1]
            msg = ("Another zrdun is already up using socket %r:\n%s" %
                   (self.options.sockname, data))
            sys.stderr.write(msg + "\n")
            self.logger.critical(msg)
            sys.exit(1)

technisch ist PHP doch auch nicht wirklich "gefährlich" wenn man es richtig handhabt und konfiguriert. Mit eigenen Librarys kann man PHP dann auch noch erweitern mit eigenen Funktionen.

Doch ist es. Denn PHP verleitet zu schlechter Programmierung. Und schlechte Programmierung ist das was mann eigentlich in fast jedem PHP Code entdeckt.
Es sieht doch so aus das mann zwar erkannt hat das globale Variablen ein Sicherheitsrisiko sind (hat ja lang genug gedauert) aber schreckt davor zurück register_globals = on gleich zu verbieten.
Resultat: nicht wenige Hoster erlauben register_globals. Womit selbst jene Scripte die auf register_globals off gestrickt sind leider damit handeln müssen. Oder aber jener Programmierer muss darauf achten global Variablen in seiner .htaccess umzustellen.
Das zeigt aber das PHP in Sicherheitsfragen genauso konzeptionslos ist wie bei der benennung.


OOP ist wirklich nicht die Stärke von PHP aber wo braucht man das schon wirklich bei einer Website. Einfache Klassen kann man auch mit PHP4 erzeugen, zum einfachen handlen eines Warenkorbs etc. reicht es vollkommen aus. Wenn man Objekte erstellen will die nur bedingten Zugriff auf Attribute und Funktionen haben muss man halt PHP5 verwenden.

OOP ist etwas mehr als Klassen erzeugen. Ich habe schon geschrieben das keine Exception geworfen wird, die mann abfangen könnte, wenn eine Datei nicht lesbar ist.
Nein PHP geht noch nen Schritt weiter richtung bescheuert und erlaubt es sogar mit @ komplette Fehlermeldungen / Fehlschläge zu ignorieren.
Und das ist für ein Warenkorb sehr wichtig. Welcher Webshop Anbieter will denn gerne
Waren verschicken ohne das jene Bestellung auch unter Rechnungen protokolliert wird.
Wenn du denkst sowas kommt nicht vor, hast du dich geeirrt. Genauo so ein Webshop habe ich vor ein paar Jahren mal fixen müssen.
Der "Programmierer" hatte nach dem Bestellauftrag ein fehlgeschlagenen MySQL Query ignoriert. Weshalb ein paar Bestellungen raus gingen ohne das dafür eine Rechnung erstellt wurde.


Die Namensgebung ist für wahr nicht berauschend, ein großer Nachteil von PHP aber nicht wirklich schwerwiegend wie ich finde. Mit php.net hat man eine perfekte Plattfom in der man ohne lange zu suchen genau das findet was man braucht.

PHP ist auch die einzige Sprache die ich kenne in der mann permanent mit einem Auge in der Doku verbringen muss.
Oder wer weiss denn schon Auswendig welche dieser 14 Escaping Funktionen aktuell am besten passt:

dbx_escape_string, escapeshellarg, escapeshellcmd, pg_escape_bytea,
pg_escape_string, pg_unescape_bytea, addslashes, addcslashes, preg_quote,
quotemeta, mysql_escape_string, mysql_real_escape_string,
mysqli_real_escape_string, sqlite_escape_string

...
 
MasterEvil hat gesagt.:
Das PHP hässlich ist würde ich nicht gerade sagen, ich finde eine Syntax die stark an Basic oder ähnliches erinnert viel hässlicher, die C ähnlich Syntax von PHP find ich viel angenehmer zu schreiben ;-]
Also ich finde es mehr als hässlich wenn im Quellcode jedes dritte Zeichen ein Sonderzeichen ist.
MasterEvil hat gesagt.:
Sicherheits technisch ist PHP doch auch nicht wirklich "gefährlich" wenn man es richtig handhabt und konfiguriert. Mit eigenen Librarys kann man PHP dann auch noch erweitern mit eigenen Funktionen.
Genau hier liegt aber das Problem. Das Wenn. Wenn man es richtig handhabt und konfiguriert. Wer der meisten Php-User macht das aber?
Viele kopieren sich ihre Seite zusammen und nennen sich dann auch noch Webdesigner.
MasterEvil hat gesagt.:
OOP ist wirklich nicht die Stärke von PHP aber wo braucht man das schon wirklich bei einer Website. Einfache Klassen kann man auch mit PHP4 erzeugen, zum einfachen handlen eines Warenkorbs etc. reicht es vollkommen aus. Wenn man Objekte erstellen will die nur bedingten Zugriff auf Attribute und Funktionen haben muss man halt PHP5 verwenden.
Bei einer einfachen Website braucht man sicherlich keine Objektorientierung. Aber es gibt Webanwendungen, die über eine Warenkorb hinausgehen. Die komplexer sind, als ein einfacher Webshop. Und da macht Objektorientierung sehr wohl Sinn.

//EDIT:
mist mal wieder zu langsam gewesen :-S
 
Christian Fein hat gesagt.:
Doch ist es. Denn PHP verleitet zu schlechter Programmierung. Und schlechte Programmierung ist das was mann eigentlich in fast jedem PHP Code entdeckt ...
Nur weil es schlechte "Programmierer" gibt, und ungeeignete Möglichkeiten, ist doch noch längst nicht die ganze Sprache schlecht.
Zur Syntax, ja ok nicht unbedingt basic *g* aber ich finde persönlich finde den Stil unschön. Vieleicht einfach nur ungewohnt weil ich auch manchmal nen bisschen was in Java mache .. vieleicht aber auch ein wenig zu sehr eingekürzt und unstrukturiert :)

niggo hat gesagt.:
Bei einer einfachen Website braucht man sicherlich keine Objektorientierung. Aber es gibt Webanwendungen, die über eine Warenkorb hinausgehen. Die komplexer sind, als ein einfacher Webshop. Und da macht Objektorientierung sehr wohl Sinn.
Es macht Sinn wenn ich meinen Code anderen zur Verfügung stelle die damit arbeiten sollen. Ich wüsste aber kein richtiges Anwendungsgebiet für eine Webpräsens die objektorientierte Programmierung in vollen Umfang benötigt.
 
MasterEvil hat gesagt.:
Es macht Sinn wenn ich meinen Code anderen zur Verfügung stelle die damit arbeiten sollen. Ich wüsste aber kein richtiges Anwendungsgebiet für eine Webpräsens die objektorientierte Programmierung in vollen Umfang benötigt.

Nun genau die selben Anwendungsgebiete wie normale programme auch.

Webanwendungen sind heuzutage keine einfachen dynamischen Webseiten mehr. Nein sie sind ersatz für eine Mene an normalen GUI Anwendungen.

Webanwendungen spiegel massenhaft an daten ab und müssen somit in bestehende Strukturen eingebastelt werden. Du kannst davon ausgehen das Webseiten von auch nicht
technischen Firmen wie z.b http://knorr.de/ mit der Firmenit verzahnt sind.

Davon auszugehen das mann im Web nur ein Blog und ein Gästebuch veröffentlichen will und ein bischen Dynamic hier und da ist einfach falsch.
 
Hallo Christian,
durch deine tausende Links hast du mein Interesse an Python geweckt :) Mal eine Frage dazu, welche Einsatzgebiete hat den Python? Mir gefällt die Syntax schon sehr gut, nur kann ich das ja nicht zum Programmieren einer einfach Windowsanwendung nutzen. Ich verstehe das mehr in der Art das ich Programme damit steuern kann, wenn die ein Interface für Python integriert haben!? Ist das so? Für was kann ich Python den sonst noch einsetzen?

Gruss
 
Kann mir jemand mal erklären wie ich [] in der Live Konsole schreiben kann? Ich krieg das einfach nicht da reingeschrieben. Kopieren und einfügen klappt auch nicht wirklich.
 
Bei mir klappt das. Wahrscheinlich liegt das aber nur daran, dass ich Mac OS und nicht Windows nutze.
 

Neue Beiträge

Zurück