Ich hasse ja persönlich Artikel wie diesen (313373 PHP Speed Optimization Tweeks you can not live without … gäähn). Aber beenden wir das Selbstbashing und kommen zum Punkt.
stream_resolve_include_path (php >= 5.3.2)
Manchmal kann es nützlich sein zu wissen, wo genau sich eine includete Datei versteckt. Der include_path macht es einem da ja oft nicht einfach.
var_dump(stream_resolve_include_path("fpdf/fpdf.php")); //string(31) "D:\xampp\php\PEAR\fpdf\fpdf.php"
DateTime::createFromFormat (php >= 5.3.0)
Zum „entwirren“ von Zeitangaben gehe ich gerne den Weg über strtotime und date. Etwa so:
echo date("d.m.Y H:i:s", strtotime("Mon, 15 Aug 2005 15:12:46 UTC")); //15.08.2005 17:12:46
Das mag noch gehen, da wir ein Datum nach RFC822 in strtotime hereingesteckt haben, mit dem es umgehen kann. Haben wir jetzt allerdings eine Datumsangabe der Abart Monday 8th of August 2005 at 03:12:46 PM kommen wir nicht so einfach davon. Hier schafft DateTime::createFromFormat Abhilfe:
$date = DateTime::createFromFormat('l jS \of F Y \a\t h:i:s A', 'Monday 8th of August 2005 at 03:12:46 PM'); echo $date->format('d.m.Y H:i:s'); //08.08.2005 15:12:46
finfo (php >= 5.3.0)
War früher ein PECL-Paket. Macht genau das, was man von einer Klasse erwartet, die sich fileinfo nennt:
$finfo = new finfo(); $file = "D:/xampp/htdocs/zipfile.zip"; print $finfo->file($file, FILEINFO_MIME) . "\r\n"; print $finfo->file($file, FILEINFO_MIME_TYPE) . "\r\n"; print $finfo->file($file, FILEINFO_MIME_ENCODING) . "\r\n";
Erzeugt folgenden Output:
application/zip; charset=binary application/zip binary
Eine Auflistung der Konstanten findet sich hier.
Ein inkonsistenter Scherbenhaufen
Bei der Arbeit mit finfo und DateTime hab ich mich mal wieder so richtig schön über den furchtbar uneinheitlichen Mischmasch aus normalen Funktionen und OOP geärgert. Da werden in den prozeduralen Varianten etwa andere Parameter in anderer Reihenfolge erwartet und das Manual bricht sich die Wurst ab. Das ist halt der Fluch der Popularität und des Zwangs zur Abwärtskompatibilität.
„Haben wir jetzt allerdings eine Datumsangabe der Abart Mon, 15 Aug 2005 15:12:46 UTC kommen wir nicht so einfach davon.“
Liege ich richtig in der Annahme, dass dies wie folgt lauten sollte?
„Haben wir jetzt allerdings eine Datumsangabe der Abart Monday 8th of August 2005 at 03:12:46 PM kommen wir nicht so einfach davon.“
:)
Du hast sowasvon Recht. Danke für die Korrektur.