PHP 5.4: Die neue Funktion header_register_callback()
Neben den vielen größeren Änderungen und neuen Features in PHP 5.4 gibt es auch eine kleine, aber vielleicht nützliche Funktion, mit der man noch an den HTTP-Headern rumpfuschen kann bevor sie an den Browser geschickt werden: header_register_callback().
Gerade bei älteren Applikationen, bei denen die Header mittels header() an x-beliebigen Stellen manipuliert werden, kann man mittels dieser Funktion an einer zentralen Stelle noch welche hinzufügen, ändern oder entfernen.
Der Callback, der an die Funktion übergeben wird, wird genau dann aufgerufen wenn die Header an den Browser geschickt würden, also bei der ersten Ausgabe des Skripts. Ich kopiere mal als Beispiel schnell den Code aus dem Manual, daran ist ersichtlich was die Funktion machen kann:
<? header('Content-Type: text/plain'); header('X-Test: foo'); function foo() { foreach (headers_list() as $header) { if (strpos($header, 'X-Powered-By:') !== false) { header_remove('X-Powered-By'); } header_remove('X-Test'); } } $result = header_register_callback('foo'); echo "a";
Man benötigt es wahrscheinlich nicht jeden Tag und in jedem Projekt, aber vielleicht ist es mal nützlich bei einem älteren Projekt sich genau da einzuhängen.
Gut, dass das pünktlich zum 5.4.1 Release kommt 😀 Auf 5.4.0 würde ich die Funktion lieber nicht verwenden, da sie dort durch ein doppelten dtor beim shutdown ein segmentation fault verursachen kann 🙂
nikic
26 Apr 12 at 14:27
[…] PHP 5.4: Die neue Funktion header_register_callback() | PHP Gangsta […]
Linkhub – Woche 18-2012
8 Mai 12 at 14:49