Magento -> Zend

MsvP@habdichliebhasi

Erfahrenes Mitglied
Ich verzweifel gerade.... :(

Ich versuche seit heute morgen Magento via "Mage.php" in eine andere Zend-Installation zu integrieren.

Leider basieren beide auf einem Zend-Core und somit gibt es anscheinend gleiche Klassen, die geladen werden. Somit führt die normale Vorgehensweise, bei der man folgendes tut

PHP:
require_once($path."/Mage.php");

dazu, dass immer folgender Fehler ausgeworfen wird:

Fatal error: Cannot redeclare class Zend_Cache_Backend_File in magento/lib/Zend/Cache/Backend/File.php on line 41


ich weiß leider langsam nicht mehr weiter. Wenn ich versuche diese Class einfach abzufangen mit

PHP:
if(!class_exists('Zend_Cache_Backend_File'))

dann werden nur weitere Fehler angezeigt... :(

Hat schon irgendwer Erfahrung mit dem Einbinden von Magento in eine andere Zend-Installation.


Lg
Micha
 
Vermutlich bestehen noch andere Abhängigkeiten zur alten Zendversion.... Warum redeclare? Eigentlich sollte vom alten Core doch garnichts mehr geladen werden ;)

Musst du mal gucken, obs da nicht noch mehr gibt, als dieses eine require. (Vielleicht auch in anderen Modulen, die nicht sauber mit der API gearbeitet haben, sondern irgendwo absolute Pfade stehen?)

PS: Ich habe weder mit zend noch mit Magento schonmal geabrietet, kann also nur so abstrakte Lösungsvorschläge machen ;)
 
Hey alxy,

danke für deine Ideen. Ich glaube aber, ich habe das oben schlecht erklärt.
Ich möchte nicht eine Magento Installation auf ein anderes Zend umsiedeln, sondern aus einer anderen Webseite, die Zend basiert ist (wie eben auch Magento) Dinge aus dem Magento-Shop herauslesen und verarbeiten.
Dafür gibt es im Web zahlreiche Tutorials, bei denen die mage.php - Datei von Magento per include eingelesen wird und danach lässt sich auf alles mögliche aus der Shop-installation zugreifen und auch wieder zurück speichern.
Problem ist nur, dass die mage.php eben auch den Zend-Core von Magento läd und das führt dann mit der aktuellen Webseite, die den Zend-Core ja bereits geladen hat zu zahlreichen Fehlern. :(

Lg
Micha
 
Achso...

Naja, das ist natürlich auch eher ungewöhnlich da einen weiteren Zendcore benutzen zu wollen. Warum nicht den, der mit der Magentoinstallation kommt, benutzen? Stichwort Kompatibilität. Und ich meine gehört zu haben, dass Zend stark Modulbasiert ist, d.h. sollte kein problem sein, das ein oder andere Modul, was vllt im Magento-Zend-Core fehlt einzubauen.
 
Naja, das Problem ist, dass ich mich ja bereits in meiner Webseite befindet, die zu diesem Zeitpunkt bereits den eigenen Zend-Core geladen hat. Das hat damit zu tun, dass ich Benutzerkonten aus dieser Installation mit Benutzerkonten aus dem Magento System verbinden will.
Ich habe auch schon verzeifelt gesucht, ob ich die Magento-Datei irgendwie ohne den eigenen Core laden kann, aber ich finde da keine Lösung. Ich finde nicht ein mal die Stelle, an der die Mage.php oder andere includierte Dateien diesen aufrufen.
 
Es scheint jetzt zu klappen. Ist nicht unbedingt die sauberste Variante, aber ich habe um die Konflikt-Klassen jetzt eine Abfrage gebaut, die jeweils prüft, ob die Klasse bereits vorhanden ist. Damit habe ich natürlich im Zend-Core der Magento Installation rumgefuscht. Aber wenigstens waren es nur 6 Dateien. Und es ist auch nur je eine IF-Abfrage. Habe von allem ein Backup gemacht und Notizen eingefügt, falls mal ein Update eine der Dateien ändern sollte.

Wenn noch jemand eine bessere Idee hat - immer her damit. :)

Lg
Micha
 
Zurück