PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for 2011

create_function() genauso übel wie eval()?

with 19 comments

Heute mal eine Sonntagsfrage:

Ich überlege gerade wie ich ein Problem löse, bei dem ich wohl nur mit viel Aufwand drumherum komme, eval() zu benutzen. Auf der Suche nach einer Lösung fiel mir auch die Funktion create_function() ein, der man ähnlich wie eval() einen String übergeben kann, der dann beim Aufruf der erstellten Funktion ausgeführt wird.

Und nun meine Frage an euch: Sind die beiden Funktionen in der Gefährlichkeit gleichzusetzen wenn man beide mit einem String füllt, der zusammengesetzt wurde aus Usereingaben? Bei beiden kann böses passieren wenn man die Usereingaben nicht ordentlich filtert, sehe ich doch richtig oder? Seht ihr einen Vor- oder Nachteil von create_function() gegenüber eval()?

Ich frage weil eval() überall auf der Welt als böse angesehen wird, aber über create_function() redet niemand, und ich glaube bei unvorsichtiger Nutzung ist sie genauso gefährlich.

Written by Michael Kliewe

Mai 29th, 2011 at 12:54 pm

Posted in PHP

Tagged with , ,

Was ist phar und wie nutze ich es?

with 14 comments

Phar ist ein Applikations-Archiv-Format genauso wie Jar es für Java ist. Ein Phar-Archiv enthält Dateien und Ordnerstrukturen, und diese Dateien können dann genutzt werden ohne die Phar-Datei zu entpacken. Man kann so seine ganze Applikation oder auch Frameworks in Phar-Dateien packen und verteilen. Phar ist seit 5.2 als PECL Erweiterung verfügbar, seit 5.3 ist es fest eingebaut.

Die Tatsache dass es dann nur noch eine Datei ist hat mehrere Vorteile. Einerseits ist der Upload auf einen FTP schneller, aber auch beispielsweise der Download ist einfacher, anstatt einer zip/tar.gz Datei die danach noch entpackt werden muss lädt man einfach die Phar-Datei und kann loslegen. Viele kleine Dateien bedeuten auch viele Dateisystem-Zugriffe, und wie wir alle wissen ist die Festplatte langsam, Phar bringt also Performance. Wenn man bereits einen Byte-Code-Cache aktiviert hat ist der Performance-Vorteil nur noch gering, aber vorhanden.

Wenn ich beispielsweise in einer phar-Datei meine komplette Applikation habe, starte ich diese folgendermaßen:

php application.phar

Wenn ein Phar-File auf diese Weise gestartet wird, wird das sogenannte Stub-File aufgerufen, quasi der Einstiegspunkt. Das Stub-File ist eine normale PHP-Datei innerhalb des Phar-Archives.

Alternativ kann ich auch aus einem PHP-Script heraus ein Phar-Archiv inkludieren:

Weiterlesen »

Written by Michael Kliewe

Mai 26th, 2011 at 9:13 am

Posted in Allgemein,PHP

Tagged with

Slides vom phpDay 2011

without comments

Der 7. phpDay fand vom 12. bis zum 14. Mai, diesmal wieder in Verona, statt. Vor allem englische , aber auch drei italienische Talks wurden gehalten, hier die Liste:

12.Mai 2011

Caching on the Edge
Fabien Potencier

Testing LAMP Applications
Sebastian Bergmann

Any to any – Convert your documents!
Kore Nordmann

Building search applications with Apache Solr and PHP
Paul Borgermans

A generic PHP Application installer
Kore Nordmann

Security 202 – Are you sure your site is secure?
Arne Blankerts

Modular application architecture
Kore Nordmann

Weiterlesen »

Written by Michael Kliewe

Mai 23rd, 2011 at 8:34 am

Gewinner des Buches „Coders at Work“

with 8 comments

Hier möchte ich kurz den Gewinner der Aktion vom letzten Freitag preisgeben. Gewonnen hat das Buch Coders at Work Christian mit einer 2113 Bytes großen E-Mail, herzlichen Glückwunsch! Ich habe dich gerade angeschrieben zwecks Adresse.

Das wars auch schon für heute.

Written by Michael Kliewe

Mai 21st, 2011 at 1:19 am

Posted in PHP

Tagged with

Kleines Script zum Aufräumen

with 16 comments

Ich stand kürzlich vor dem Problem, ein Verzeichnis aufräumen zu müssen, in dem andauernd neue Dateien abgelegt werden, von denen ich aber nur die aktuellsten 5 Dateien behalten möchte.

Gesagt getan.

Erster Schritt ist die Erstellung einer Liste mit allen Dateien um die es geht. Da in dem Verzeichnis noch andere Dateien liegen lasse ich einen regulären Ausdruck entscheiden, ob der Dateiname ins Schema passt oder nicht. Danach wird die Liste der betroffenen Dateien nach dem „Letzten Änderungsdatum“ sortiert und zum Schluss alle überflüssigen Dateien gelöscht. Hier der Quellcode meiner kleinen Klasse:

Weiterlesen »

Written by Michael Kliewe

Mai 19th, 2011 at 9:52 am

Posted in PHP

Tagged with ,