2011-01-08 2 views
0

Ich versuche, mit ez Komponenten und AWS PHP SDK zur gleichen Zeit zu arbeiten.ez Komponenten und AWS PHP SDK macht ez Komponenten ausflippen

Ich habe eine Datei namens resize.php, die gerade die Größenänderung von Bildern mit den ez Components ImageTransition Tools behandelt.

Ich stelle das Bild für die Größenanpassung in Amazon AWS SQS. Wenn ich das AWS PHP SDK und ez Components in dieselbe Datei lade, beschwert sich PHP immer darüber, dass die ez Components-Klassen nicht gefunden werden.

-Code sieht in etwa wie folgt aus:

amazonSQS.php:

require 'modules/resize.php'; 
require 'modules/aws/sdk.class.php'; 

$sqs = new AmazonSQS(); 
$response = $sqs->send_message($queue_url, $message); 

resize.php:

function resize_image($filename) { 

$settings = new ezcImageConverterSettings(
    array(
     //new ezcImageHandlerSettings('GD',   'ezcImageGdHandler'), 
     new ezcImageHandlerSettings('ImageMagick', 'ezcImageImagemagickHandler'), 
    ) 
); 

Fehlermeldung:

Fatal error: Class 'ezcImageConverterSettings' not found in /home/www.com/public_html/modules/resize.php on line 10 

Wenn ich die Größe nennen .php von einem anderen PHP fi le, die AWS nicht enthalten hat, funktioniert es gut.

Ich lade eZcomponents wie folgt aus:

require 'ezc/Base/ezc_bootstrap.php'; 

Es wird als PEAR-Paket installiert wird.

Irgendeine Idee jemand?

+0

Ich habe noch nie mit AWS PHP SDK gearbeitet, aber ein solches Verhalten wird normalerweise durch Probleme im Classloader verursacht. Ich nehme an, das AWS PHP SDK hat einen eigenen Classloader, der aus irgendeinem Grund keine ezComponents-Klassen findet. – Kel

+0

Es scheint, als würde AWS den Autoloader von ezComponents überschreiben. Haben Sie eine Idee, wie ich die spezifische Klasse einfach in ezComponents laden und den Autoloader ignorieren kann? – David

Antwort

0

Die PHP-Klassen von Apache Zeta/eZ-Komponenten können bequem in Ihrem PHP-Skript verwendet werden. Sie müssen für die von Ihnen verwendeten Apache Zeta-Komponentenklassen keine require- oder include-Anweisungen verwenden. Dies liegt an dem integrierten Autoload-Mechanismus, der die Klassen für Sie lokalisieren kann, wenn Sie sie anderweitig instanziieren oder verwenden.

Es gibt drei verschiedene Möglichkeiten, den Autoload-Mechanismus in Gang zu bringen:

  • Normale automatisch geladen, wenn Sie eine benutzerdefinierte Autoload-Funktion
  • Bootstrap-Datei benötigen, wenn Sie Apache verwenden Zeta autoloading
  • SPL Autoload wenn Sie mehrere Funktionen automatisch geladen

Diese drei Wege are fully documented here

registrieren müssen