| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Nun. Wenn die API bereits fertig aufbereitete PHP-Serialisierung zurückgeben bedeutet das im Umkehrschluss meistens auch, dass die API Klassen zur Verfügung stellt. So denke ich halt ![]()
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Benutzer Registriert seit: 12.04.2011
Beiträge: 50
PHP-Kenntnisse: Fortgeschritten ![]() | Eine durchaus logische und vertretbare Argumentation. Ich gehe davon aus, dass der Threadersteller innerhalb seiner Applikation Namespaces nutzt, weswegen er auch diese, anscheinend durch das API "bereitgestellten" Klassen, in einem eigenen Namespace eingebunden hat. (Natürlich könnten wir nun über die Sinn und Nutzen dieser Entscheidung debattieren, aber ich denke, dies steht hier nicht zur Debatte, da man als Entwickler, sobald man sich für eine Variante entschieden hat, diese Linie auch konstant weiterverfolgen sollte.) Eine durchaus interessante Frage wäre jedoch, aus welchem Grund das API eigentlich serialisierte PHP-Objekte zurückgibt, da dies die Verwendungsmöglichkeiten doch durchaus stark begrenzt. Sollte der Threadersteller eine Möglichkeit haben, das API zu modifizieren, so würde ich ihm dies dringend empfehlen, die es im aktuellen Zustand nur mit sehr großem Aufwand mit anderen Programmiersprachen nutzbar wäre. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Na ja, dass viele Bibliotheken noch keine Namespaces nutzen, ist nunmal nicht zu ändern. Die beim Einsatz alle umzuschreiben, wäre eine sehr umfangreiche und wahrscheinlich sehr sinnlose Arbeit. Das wäre für mich absolut keine Option. Hier mag's etwas anders aussehen. Wenn es nur um eine einzelne Klasse oder einige wenige Klassen geht, kann man das sicher mal „ummappen“. (Kann mir gut vorstellen, dass ein API auch gerne mal einen wenig durchdachten Klassennamen zurückgibt. Die potentielle Gefahr dabei ist, dass man sich alle Komponenten zerschießt, die mit dem originalen Klassennamen arbeiten (per Type-Hinting oder so). Ich würde prinzipiell vom Umbenennen abraten beziehungsweise es nur dann ins Auge fassen, wenn kein komplexerer Kontext vorliegt, in den der ursprüngliche Klassenname integriert ist. Es ist jedenfalls ein Hack. Edit: Würde aber spontan auch sagen, der eigentliche Fehler liegt im Design des API. Geändert von mermshaus (12.04.2011 um 18:45 Uhr). |
| | |
| | |
| Neuer Benutzer Registriert seit: 12.04.2011
Beiträge: 7
PHP-Kenntnisse: Fortgeschritten ![]() | Vielen Dank für die vielen Kommentare. Es handelt sich bei der Geschichte um das API von Kaltura. Klatura bietet auch eine Client Bibliothek für PHP, die ich ein wenig umgeschrieben habe. Kaltura gibt mir nur einen String zurück ohne Namespaces. So wie der aus meinem Beispiel: Code: 'O:17:"SerializationTest":3:{s:7:"counter";i:999;s:6:"myName";s:14:"Random Visitor";s:5:"myAge";i:59;}'
Wenn ich an das API von Kaltura nichts ändern kann, dann kann ich auch an der Client-Bibliothek nichts ändern (außer den Weg den ich jetzt gehe), um mit Namespaces arbeiten zu können. Habe ich das so richtig verstanden oder kann ich doch die Client-Bibliothek so verändern, dass ich Namespaces verwenden kann ohne den serialized String abzuändern? |
| | |
| | |
| Erfahrener Benutzer | Du bist nicht gewzungen mit Namespaces zu arbeiten. Auch Symfony sollte es ermöglichen, Klassen ohne Namespaces irgendwie einzubinden.. Wie genau, da müsst ich selbst nachgucken. In jedem Fall kannst du einen ganz eigenen Autoloader in der SPL registrieren, der nur für diese Klassen ohne Namespaces gut ist. Dass du Klassen mit Namespaces benutzt zwingt dich nicht dazu, alles in irgendeinen Namespace zu packen. Insofern war das mit dem Anpassen wohl überflüssig und damit sollte sich dein hausgemachtes Problem in Luft auflösen. Ja, es ist nicht schön, was aus dem gliobalen Namespace zu laden, wenn man alles hübsch in Namespaces verpackt hat. Aber es geht nunmahl. So du dich in einem Namespace befindest, kommst du mittels Backslash sozusagen raus. Code: namespace foo;
class Bar {
function getDate() {
return new \ DateTime(); // globaler Namespace (Leerzeichen nur damits Board richtig darstellt)
}
}
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Neuer Benutzer Registriert seit: 12.04.2011
Beiträge: 7
PHP-Kenntnisse: Fortgeschritten ![]() | Ich habe es jetzt so gemacht, wie du es gesagt hast, mepeisen. Ich verwende Namespaces für alle Klassen die ich von außen aufrufen möchte und lade aber alle anderen Klassen über die Autoloader-Funktion ohne Namespace nach. So funktioniert es und so möchte ich es haben. Bei meinem Beispiel im ersten Post, muss also nur der Namespace aus der Datei "SerializationTest.php" entfernt werden und das Beispiel funktioniert. Ich habe viel über Namespaces gelernt, vielen Dank an alle die mir geholfen haben. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| namespaces und require | reliC | PHP Einsteiger | 3 | 10.03.2011 08:38 |
| Bestehendes Objekt in einer inkludierten File Nutzen | MLang | PHP Einsteiger | 6 | 25.02.2011 15:45 |
| Rückgabe von mysql_fetch_object kein Objekt mehr ? | Heurazio | PHP Einsteiger | 8 | 10.12.2010 13:05 |
| Objekt in Session-Array ablegen | mupilz | PHP-Fortgeschrittene | 2 | 30.08.2010 17:25 |
| [Erledigt] Problem beim dynamischen Erweitern von Arrays in Object Porperties | dille001 | PHP Tipps 2010 | 3 | 24.05.2010 11:52 |
| Ergebnis einer Datenbankabfrage als Objekt | chunky | PHP Tipps 2010 | 7 | 27.01.2010 21:38 |
| Objekt per Klassenmethode löschen | Ti-Systems | PHP Tipps 2010 | 4 | 20.01.2010 19:28 |
| [Erledigt] Objekt Iteration Löschmethode | stayInside | PHP-Fortgeschrittene | 10 | 29.11.2009 15:07 |
| Objekt löschen via Methodenübergabe desselben | nikosch | Software-Design | 19 | 01.06.2009 00:38 |
| [Erledigt] Objekt an Konstruktor übergeben | hawkeye78 | PHP Tipps 2009 | 7 | 28.02.2009 19:01 |
| Objekt im GET-Query wird nicht übertragen | Ralpho | PHP-Fortgeschrittene | 10 | 05.05.2008 10:03 |
| [Erledigt] PHP5 OOP Zugriff aus einem Objekt auf ein externes Objekt | PHP Tipps 2006 | 5 | 28.01.2006 16:05 | |
| Objekt übergeben | Fatal Error | PHP Tipps 2007 | 5 | 28.12.2005 14:43 |
| kann sich ein Objekt selbst serialisieren? | ajo_silent | PHP Tipps 2005-2 | 24 | 27.06.2005 09:13 |
| Immer noch Probleme mit serialize und unserialize | PHP-Fortgeschrittene | 13 | 15.08.2004 13:15 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php unserialie get, unserialie __autoload before |