PHP-Umfrage
-
Lügner schrieb:
Weshalb nehmen eigentlich alle für's Web interpretierte Sprachen? Naja, zumindest ist das ja sehr verbreitet.
na, weil sich sonst bei jedem kleinen bug gleich der webserver verabschieden würde.
ausserdem ist der vorteil von compilersprachen (ausführungsgeschwindigkeit) wohl nicht so wichtig bei web-programmen. netzwerklatenz ist die grössere bremse.
...und es ist auch ein angenehmeres entwickeln. man programmiert und testet zu hause und wenn alles läuft, schiebt man die files einfach per ftp auf den server - fertig.

-
this->that schrieb:
pale dog schrieb:
Mr. N schrieb:
Zum Beispiel sollte ein Betriebssystem grundsätzlich Open Source sein. Aber das ist auch nur meine Meinung.
nicht nur deine.
meiner meinung nach sollte jede software (ab einem gewissen verbreitungsgrad) open source sein.
überlegt doch nur mal, wie viel wissen ihr durch open source software erlangt habt, oder wieviele räder ihr sonst nochmal erfunden hättet...

Hm, ich hab noch kein einziges Wissen aus Open Source gezogen. Und ich hätte auch bestimmt keine Lust meine 3D-Engine, in die ich Jahre an Arbeit und Geld gesteckt habe, dann einfach so als Open Source zu veröffentlichen.
Naja, ich hab allerdings auch generell für Open Source und das ganze Umfeld wenig übrig.
Wieso verwecheln das so viele? OSS heist ja nicht das man die Software verschenkt. Ausserdem würdest du von der Community profitieren, wenn sich jemand für deine Engine interessiert, würde er sie verbessern und du könntest seine Verbesserungen direkt nutzen. Ausserdem bezweifle ich das irgendwer eine CSS Engine haben will.
Aber hier gehts ja um PHP. Also ich finde PHP5 ist super als Sprache. In PHP5 wurde OOP weitaus besser umgesetzt als C++, Java oder C#.
-
DEvent schrieb:
Aber hier gehts ja um PHP. Also ich finde PHP5 ist super als Sprache. In PHP5 wurde OOP weitaus besser umgesetzt als C++, Java oder C#.
Das ist jetzt irgendwie... unerwartet. Begründe das doch bitte.

-
Bestimmt hat es mehr "OOP-Schlüsselwörter"

-
hmm - seit ich python kann hab ich fast keine probleme mehr mit webapps ( da alle python libs die ich benutze implizit für sicherheit sorgen, und selbst mit extensiven tests kaum noch löcher probleme auftauchen)
damals als ich mal php gelernt hatte weil alle das taten endete man immer mit nem arsch voll problemen
btw - fals es mal flott sein muss - haskell, erlang und lisp (evtl sogar .net) sind hervoragend geeigent um sichere flotte apps zu machen
der riesenvorteil all dieser lösungen - man muss nicht um eingebaute sicherheitslöcher drumrumarbeiten, und die sprachen nicht nicht aus kommerzgründen kastriert (zend engine verkaufsargumente)
-
Mr. N schrieb:
DEvent schrieb:
Aber hier gehts ja um PHP. Also ich finde PHP5 ist super als Sprache. In PHP5 wurde OOP weitaus besser umgesetzt als C++, Java oder C#.
Das ist jetzt irgendwie... unerwartet. Begründe das doch bitte.

Du nimmst mir die Worte aus dem Mund
Bei C++ kann ich es mir (noch) an diversen Stellen vorstellen, aber bei Java und C#? never...
-
Was mich an PHP wirklich nervt, ist, dass so etwas nicht geht:
$myVariable = myFunction($someVariable)[$someIndex];Abgesehen davon fände ich Type Hints sinnvoll ("richtige" Type Hints, nicht dieser Spielkram mit ausschließlich Arrays und Objekten, wie es ihn bisher gibt).
Zudem sollten sich die Entwickler endlich einmal einigen, welche Notationen sie denn nun verwenden wollen. str_replace() und __toString() passen semantisch nicht wirklich zusammen ...
Und die Unicodeunterstützung ist ein Graus ...Trotzdem kann man mit PHP gut arbeiten, sofern man das Groß der zahlreichen "Problematiken" einmal verinnerlicht hat.
-
árn[y]ék schrieb:
Zudem sollten sich die Entwickler endlich einmal einigen, welche Notationen sie denn nun verwenden wollen. str_replace() und __toString() passen semantisch nicht wirklich zusammen ...
PHP erhebt überhaupt nicht den anspruch, mit einem akademisch korrekten sprachdesign zu glänzen. es soll in der praxis einfach viel bringen, viele features und so...
árn[y]ék schrieb:
Trotzdem kann man mit PHP gut arbeiten, sofern man das Groß der zahlreichen "Problematiken" einmal verinnerlicht hat
genau so ist es

-
[quote="árn[y]ék"]Was mich an PHP wirklich nervt, ist, dass so etwas nicht geht:
$myVariable = myFunction($someVariable)[$someIndex];quote]
Mir stinkt auch wenn ich hunger hab, das mir meine Internetseite die mittels php geschrieben wurde nicht den Grill anwirft und paar steaks für mich brutzelt!

-
pale dog schrieb:
PHP erhebt überhaupt nicht den anspruch, mit einem akademisch korrekten sprachdesign zu glänzen. es soll in der praxis einfach viel bringen, viele features und so...
Sicherlich richtig. Dennoch würde eine einheitlichere Benennung meiner Meinung nach die Intuitivität steigern. Dabei ist mir aber natürlich bewusst, dass dies aus Abwärtskompatibilitätsgründen schlecht machbar ist. Andererseits gehen die PHP-Entwickler aber ohnehin gerade dazu über, viele "Altlasten" kompatibilitätsbrechend abzuwerfen. So sollten z.B. die Parameter zahlreicher str_*()-Funktionen in ihrer Reihenfolge angeglichen werden; ob und wie dies nun realisiert wurde oder wird, weiß ich allerdings nicht so genau.
VergissEs schrieb:
Mir stinkt auch wenn ich hunger hab, das mir meine Internetseite die mittels php geschrieben wurde nicht den Grill anwirft und paar steaks für mich brutzelt!

Abgesehen davon, dass ich auch gerne eine solche Internetseite hätte - Nenne mir einen rationalen Grund, warum dies
$myVariable = myFunction($someVariable)[$someIndex];nicht gehen soll, und ich hingegen gezwungen bin, eine Zwischenvariable zu deklarieren:
$tmpVar = myFunction($someVariable); $myVariable = $tmpVar[$someIndex]; unset($tmpVar);
-
Mr. N schrieb:
DEvent schrieb:
Aber hier gehts ja um PHP. Also ich finde PHP5 ist super als Sprache. In PHP5 wurde OOP weitaus besser umgesetzt als C++, Java oder C#.
Das ist jetzt irgendwie... unerwartet. Begründe das doch bitte.

In PHP5 gibts die __call, __get und __set Methoden. Dadurch kann man das Delegator-Pattern weitaus einfacher implementieren:
class ClassOneDelegator { private $targets; function __construct() { $this->target[] = new ClassOne(); } function addObject($obj) { $this->target[] = $obj; } function __call($name, $args) { foreach ($this->target as $obj) { $r = new ReflectionClass($obj); if ($method = $r->getMethod($name)) { if ($method->isPublic() && !$method->isAbstract()) { return $method->invoke($obj, $args); } } } } }Die Reflexion-API ist weitaus einfacher als in Java und C#. Dynamische Typen sind auch recht praktisch. Das einzige was ich in PHP vermisse sind namespaces. Arrays und Maps sind auch besser, intuitiver als in Java/C#.
Mit PHP hats mir Spass gemacht zu programmieren, die Sprache macht es einem so einfach wie möglich. Man braucht auch nicht ständig an irgendwelche Pakete zu denken, die man einbinden muss. Ein einfaches strpos() oder fopen() reicht ohne ein include blub oder require foo zu schreiben. Der Nachteil ist eben, dass viele Namen belegt sind und es ist nicht immer klar welche schon belegt sind. Deswegen wären namespaces wirklich gut.
-
@DEvent: Schau dir doch mal Smalltalk / Ruby / Lisp an.
-
Mr. N schrieb:
@DEvent: Schau dir doch mal Smalltalk / Ruby / Lisp an.
Mein Problem ist, dass wenn ich kein Problem habe oder kein Projekt grade eine Sprache benötigt, ich keinen Grund habe diese Sprachen mehr als nur oberflächlich zu erkunden. Ich schau mir dann Smalltalk / Ruby / Lisp an, denke "ja das sieht alles schön aus" und lege es wieder mit einem Schulterzucken in die Ecke. Ausserdem habe ich PHP5 mit C++, Java und C# verglichen.
Für Ruby sehe ich eine Chance, weil RonR gibt, aber versuch mal einen Webserver mit RonR zu finden.
-
kann z.B. meiner einfach so
aber im gegensatz zu den meisten 08/15 developern ohne sicherheitsverständniss bin ich auch dazu bereit für meinen webspace zu zahlen, nur um eine sichere umgebung zu haben
php ist da kein bestandteil, und wird nie einer sein
-
DEvent schrieb:
Mr. N schrieb:
DEvent schrieb:
Aber hier gehts ja um PHP. Also ich finde PHP5 ist super als Sprache. In PHP5 wurde OOP weitaus besser umgesetzt als C++, Java oder C#.
Das ist jetzt irgendwie... unerwartet. Begründe das doch bitte.

In PHP5 gibts die __call, __get und __set Methoden. Dadurch kann man das Delegator-Pattern weitaus einfacher implementieren:
class ClassOneDelegator { private $targets; function __construct() { $this->target[] = new ClassOne(); } function addObject($obj) { $this->target[] = $obj; } function __call($name, $args) { foreach ($this->target as $obj) { $r = new ReflectionClass($obj); if ($method = $r->getMethod($name)) { if ($method->isPublic() && !$method->isAbstract()) { return $method->invoke($obj, $args); } } } } }Die Reflexion-API ist weitaus einfacher als in Java und C#. Dynamische Typen sind auch recht praktisch. Das einzige was ich in PHP vermisse sind namespaces. Arrays und Maps sind auch besser, intuitiver als in Java/C#.
Mit PHP hats mir Spass gemacht zu programmieren, die Sprache macht es einem so einfach wie möglich. Man braucht auch nicht ständig an irgendwelche Pakete zu denken, die man einbinden muss. Ein einfaches strpos() oder fopen() reicht ohne ein include blub oder require foo zu schreiben. Der Nachteil ist eben, dass viele Namen belegt sind und es ist nicht immer klar welche schon belegt sind. Deswegen wären namespaces wirklich gut.
// ungetestet import java.lang.reflect.Method; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; /// ... public static <T> T createDelegator(Class<T> superclass, final Object delegate) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(superclass); enhancer.setCallback( new MethodInterceptor() { public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { return method.invoke(delegate, args); } } ); return (T) enhancer.create(); }Ich seh schon, wie viel einfacher es doch in PHP ist ...

-
Nur mal um zu zeigen, das Sicherheitslücken durch PHP real sind:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-184769.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-183935.html
-
import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;Welche Bibliothek ist das, cglib? Die kannte ich noch nicht.
Und kann man jetzt einfach
delegator = new ClassOneDelegator(); delegator.irgend_eine_methode_die_niergens_in_ClassOneDelegator_auftaucht(foo, blaa); delegator.irgend_ein_attribut_der_niergens_in_ClassOneDelegator_auftaucht = blaa;schreiben?
-
rüdiger schrieb:
Nur mal um zu zeigen, das Sicherheitslücken durch PHP real sind:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-184769.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-183935.htmlWas hat das mit Php-Fehlern zu tun? Das erste ist eine mySQL-Injektion und beim zweiten wurde der Server gehackt. Dies könnte mit jeder anderen Sprache auch passieren, wer mySQL-Befehle ohne überprüfung/maskierung ausführt ist halt selber schuld.
PHP hat aber schon sehr viel Balast von älteren Versionen. Ist ja mit C++ genauso. Vielleicht wäre es besser einen Bruch zu machen zwischen Php4 und Php5, und so die Web-Entwickler zu ihrem Glück zwingen.
-
dann kann man auch gleich eines der genialen frameworks in ruby oder python nehmen
die sind flotter als php und für die gewöhnlichen 08/15 seiten muss man keine zeile sql schreiben, injections werden automatisch verhindert, und man hat eine sauere trennung von modellen, opertationen und darstellung
warum also php noch ändern - einfach nur was einsetzen, das nicht mist ist
-
DEvent schrieb:
Ist ja mit C++ genauso.
Ich höre wesentlich seltener von sicherheitskritischen Bugs in GCC, glibc und libstdc++ als in PHP. Also nein, ist nicht genauso.