Hallo!
Mein Name ist David Müller, ich arbeite bei der Public Cloud Group und wohne in Frankfurt. Hier geht es hauptsächlich um Webentwicklung.Kategorien
- webdev (131)
- php (84)
- Javascript (32)
- Datenbanken (22)
- Software Engineering (12)
- Performance (8)
- Security (27)
- PHP-WTF (11)
- Best of the Web (13)
- Quicktips (32)
- Linux (4)
- Java (3)
- misc IT (10)
- Persönlich (9)
- webdev (131)
Blogroll
Neueste Kommentare
- Tristan Tate bei Javascript: Arrays kopieren
- Daniel Marschall bei Dealing with Trusted Timestamps in PHP (RFC 3161)
- Login Mit Facebook Tutorial – Logini helper bei Facebook API – Tutorial
- PHP validation/regex for URL - Design Corral bei Why URL validation with filter_var might not be a good idea
- Manuel bei Meine ultimativen Buchempfehlungen
Archiv der Kategorie: php
PHP Typehinting schon heute
Ein Traum!
function exampleString(string $string) { echo "'$string' is a string!\n"; } function exampleInt(int $int) { echo "$int is an int!\n"; } function exampleFloat(float $float) { echo "$float is a float!\n"; } function exampleBool(bool $bool) { var_export($bool); echo " is a bool!\n"; } exampleString("Hello World!"); //'Hello World!' is a string! exampleInt(1); //1 is an int! exampleFloat(1.2); //1.2 is a float! exampleBool(false); //false is a bool! exampleBool("not really bool"); /* Catchable fatal error: Argument 1 passed to exampleBool() must be an instance of Bool, string given, called in D:\xampp\htdocs\typehint\example.php on line 23 and defined in D:\xampp\htdocs\typehint\example.php on line 13 */
Und das alles gibts nicht erst in 3 Jahren sondern bereits heute!… Den ganzen Post lesen
Veröffentlicht unter php, webdev
2 Kommentare
Objekte werden per Referenz übergeben – oder?
Beim Durchstöbern von Rudi’s PHP Labor bin ich auf diesen interessanten Artikel gestoßen, den ich hier gern nochmal aufwärmen möchte.
Etwas Code zum warmwerden:
<?php function modify(StdClass $t) { $t->foo = 321; } $instance = new StdClass; $instance->foo = 123; modify($instance); print $instance->foo;
Und, was kommt raus? Richtig! 321! Schließlich wird eine Referenz des Objekts übergeben. Wenn ich nun aber in der modify-Funktion die Variable, überschreibe…
<?php function modify(StdClass $t) { $t = new StdClass; $t->foo = 321; } $instance = new StdClass; $instance->foo = 123; modify($instance); print $instance->foo;
… lautet das Ergebnis auf einmal 123! Also doch nicht ganz so referenzig.… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
Hinterlasse einen Kommentar
Niemand soll wissen, dass die Webseite mit PHP läuft!
Kleines Easteregg: Einfach mal an eine beliebige URL
?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
anhängen, bei mir sieht das so aus.
Toll, oder? Weiterhin verraten die Response-Headers ungeniert, was los ist:
Wenn in der php.ini nun die Einstellung expose_php = Off getätigt wird, klappt weder das „Easteregg“ mit dem PHP-Bild, noch kriegt man über die Response-Header die PHP-Version mitgeteilt:
Wenn man nun noch die .php Extension „weg-modrewrite-d“, müsst ihr euch nicht mehr schämen, dass ihr PHP verwendet. Außer natürlich, display_errors ist an und offenbart all eure Programmierfehler ;).… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
3 Kommentare
Lasst die Datenbank ihren Job machen!
Oft schau ich mir Code an und sehe, dass Leute offenbar zu faul für vernünftige SQL-Statements sind. Da wird eine extrem allgemein gehaltene Abfrage auf die Datenbank losgelassen, um dann im Nachklang mit PHP zu filtern / zu gruppieren. Warum? Die Datenbank ist doch zum rechnen und für genau so Aufgaben gedacht. Zudem ists auch noch viel performanter, die Datenbank einfach ihren Job erledigen zu lassen. Vielleicht programmieren gewisse Leute einfach viel zu gern PHP, als das sie sich von der Datenbank die Arbeit abnehmen lassen würden?
Berechnungen im SELECT
SELECT price FROM product
while ($row = $sql->fetch()) { print $row['price'] * 1.95583; }
Warum nicht einfach:
SELECT price*1.95583 AS europreis FROM product
Okay, jetzt nicht das beste Beispiel aber prinzipiell läuft einem sowas öfter über den Weg.… Den ganzen Post lesen
Veröffentlicht unter php, Datenbanken, Software Engineering, Performance, webdev
6 Kommentare
Die Vernachlässigten: array_walk, array_filter, array_reduce und array_map
Bisher war die Syntax der oben aufgeführten Funktionen ziemlich unsexy, da sie mit Callbacks arbeiten und dieser dann als String übergeben werden musste. Durch anonyme Funktionen in PHP 5.3 mutet das alles wesentlich „smoother“ an, sodass ich mir mal die genannten Funktionen genauer angesehen habe und nachfolgend kurz vorstelle.
array_walk – Der foreach-Ersatz
<?php $arr = array("audi a6" => 39500, "bmw m5" => 41200, "mercedes e300" => 43400); array_walk($arr,function($val,$key) { echo $key." = ".$val."<br />"; }); /* Output: audi a6 = 39500 bmw m5 = 41200 mercedes e300 = 43400 */
Also äquivalent zu foreach, das Array selbst bleibt unverändert. Wenn man jetzt das Array per Referenz übergibt, kann man das aktuell iterierte Element sogar noch manipulieren.… Den ganzen Post lesen
Veröffentlicht unter php, webdev
Hinterlasse einen Kommentar
PHP-Includes visualisieren mit Inclued
Ich bin ja ein großer Freund von statischer Codeanalyse und optischer Aufbereitung (siehe auch Codevisualisierung mit pfff: PHP Frontend For Fun). Nun bin ich auf was neues aufmerksam geworden: Inclued. Mittels dieses coolen Tools lassen sich Includes zwischen Dateien einer Webanwendung visualisieren – sowas kann durchaus nützlich sein, wenn man sich in eine Anwendung reinschaffen möchte oder einen Überblick erhalten will.
Installationsanleitung
Ich gehe hier von Ubuntu aus, sollte aber mit kleinen Abwandlungen auch mit anderen Distributionen gut gehen.
- Wir brauchen phpize, um inclued zu installieren. Das ist im php-dev Paket enthalten.
sudo apt-get install php5-dev
- Nun wird inclued selbst über pecl installiert:
sudo pecl install inclued-alpha
- Zur php.ini
Veröffentlicht unter php, Quicktips, webdev
2 Kommentare
Best-of-the-Web 3
Und wiedermal gibts das – meiner Meinung nach – spannendste aus der Blogwelt der letzten Zeit.
- Give user feedback during execution – PHP’s Outputbuffering dazu verwenden, lang laufende Scripte „responsive“ wirken zu lassen
- Using MySQL Stored Procedures with PHP mysql/mysqli/pdo – Stored Procedures mit den 3 genannten Arten aufrufen
- Output Buffering – Verschiedene Schichten des Output Bufferings verwenden + alle Arten des „flushens“ genauer erklärt
- Strukturierte Versionierung mit Subversion – Kurzerklärung der SVN-Waffen Tags, Branches, Trunk…
- The truth about non-blocking JavaScript – Alle bekannten Arten des Scriptloadings
- Which waterfall led to greater revenues? – Über die Gefahr des Optimierens mit YSlow!
Veröffentlicht unter php, Datenbanken, Performance, Best of the Web, webdev
Hinterlasse einen Kommentar
Der Einfluss von Cookies auf die Performance einer Webseite
Cookies werden oft missachtet, wenn es um die Optimierung einer Webseite hinsichtlich Performance geht – zu unrecht! Das wunderbare YSlow von Yahoo zum Beispiel hat einen Test eingebaut, der genau darauf abzielt. In den Performance Grundsätzen dazu heißt die Leitregel Use Cookie-free Domains for Components.
Das Problem
Cookies können erstmal in beliebiger Anzahl und ziemlicher Größe auf Clientseite abgelegt werden. Das Setzen von Cookies geht sowohl mittels Javascript wie auch von der Serverseite aus, bspw. mit PHP. Womit der Cookie gesetzt wird, ist letztendlich egal. Der Effekt auf das Ladeverhalten der Webseite ist in jedem Fall, dass bei jedem HTTP-Request vom Client aus alle Cookies im Anfrage-Header mit übermittelt werden.… Den ganzen Post lesen
Veröffentlicht unter php, Javascript, Performance, webdev
2 Kommentare
Kreative Attacken mit CSRF
Frei nach der Devise „know your enemy“ möchte ich in diesem Post etwas auf weniger offensichtliche Möglichkeiten eingehen, wie mit CSRF attackiert werden kann. CSRF selbst habe ich übrigens hier genauer erklärt.
1) Feststellen, ob ein Benutzer bestimmte Seiten besucht hat
Es gibt ja bereits seit längerem die getComputedStyle-Technik. Dabei werden Links auf einer Webseite platziert und mittels Javascript ausgelesen, ob diese Links :visited sind. Alter Hut, genauer hier erklärt. Diese Technik ist allerdings in neueren Browsern nicht mehr möglich, die diese das Auslesen des Link-Status verbieten. Trotz allem gibt es noch eine Möglichkeit, um die es hier gehen soll.… Den ganzen Post lesen
Veröffentlicht unter php, Javascript, Security, webdev
Hinterlasse einen Kommentar
Best-of-the-Web 2
Und eine neue Linkserie mit kleinen Web-Leckerbissen, bunt gemischt über MySQL, CSS, PHP und Javascript.
- Can I use? – Welche HTML 5 / CSS 3 – Features sind in welchem Browser bereits implementiert?
- PEAR HTTP Download – Nette Klasse, um sauber und schmerzfrei HTTP Requests / Downloads zu tätigen
- Head JS – Kleines Javascript, was das zusammenfassen von CSS / Javascript ermöglicht + ein paar weitere schöne Features mitbringt.
- PHP dependency strategies – Zusammenfassung von 3 Dependency-Injection Strategien und einigen sinnvollen Lösungsansätzen der mit DI aufkommenden Probleme.
- Web Designer’s Guide to PNG Image Format – Unterschiede der verschiedenen PNG-Abarten klar herausgestellt.
Veröffentlicht unter php, Javascript, Datenbanken, Best of the Web, webdev
3 Kommentare