PHP Autoloader Work-a-round
Stefan Koopmanschap zeigte in seinem Vortrag "Integrating symfony and Zend Framework" auf der IPC10 in Mainz wie man Komponenten mehrerer Frameworks sinnvoll in einem Projekt verwenden kann. Herzstück der Erklärung war die Verwendung der Autoloading Funktionalität von PHP. Der Vortrag war gut durchdacht, die Beispiele anschaulich gewählt. Ein Fall wurde allerdings nicht bedacht den ich im Folgenden inklusive einer passenden Lösung darstellen möchte.
Es gibt SDKs oder Bibliotheken die sich nicht an der PEAR Namenskonvention für Namespaces und Klassen halten so wie beispielsweise das Facebook PHP SDK. Im Grunde hat man nun zwei Möglichkeiten: Entweder schreibt man sich einen eigenen Autoloader der nur auf die Facebook Klassen reagiert oder aber man passt bringt die Facebook Klasse derart an dass der vorhandene Autoloader damit zu recht kommt. Da es keinen Sinn macht Änderungen an einer Third-Party-Library vorzunehmen, sieht die einfache Lösung wie folgt aus: Man erstellt sich eine zusätzliche Datei mit dem Namen Client.php und speichert diese im gleichen Verzeichnis ab. Der Dateiinhalt:
require_once(dirname(__FILE__).'/facebook.php');
/*** Facebook client wrapper class.*/
class Facebook_Client extends Facebook{}
Nun lässt sich die neue Facebook_Client Klasse recht einfach im vorhandenen Code verwenden: $client = new Facebook_Client(); - der Autoloader erledigt den Rest.