Zum Inhalt springen

Scheduler und t3lib_div::makeInstance

Erstellt am 24. März 2011 · 4 Antworten · letzte Antwort am 27. März 2011

Tags: Frage

typonewbe ·

Hallo TYPO3 Freunde,

ich mal wieder 🙂
Ich bastle gerade an einer Extbase Extension in der auch eine Queue abgearbeitet werden muss. Dazu wollte ich die Extension Scheduler bemühen was soweit ja auch klappt. Habe meinen Task registriert und gestartet um zu sehen ob es klappt. Da mein gewünschtes TestLog geschrieben wird kann ich sagen ja es funtzt.

Nu zum Problem ich habe die BusinesLogic ausgelagert die Klasse dazu heißt
class Tx_MyExt_Task_Queue extends Tx_Extbase_Dispatcher {}

Diese möchte ich im eigentlichen Task aufrufen mit

$queue = t3lib_div::makeInstance('Tx_MyExt_Task_Queue');
$queue->execute();

Wenn ich jetzt den Task starte kommt leider eine Fehlermeldung
PHP Fatal error: Class 'Tx_MyExt_Task_Queue' not found in /pfadzurdatei/class.t3lib_div.php on line 5272

Was ich etwas komisch finde da in meiner Extension selber ich ja die Repositorys auch mit makeInstance instanziere und da geht es.

Hab mal bissl gegoogelt aber ohne Erfog die Antworten die ich gefunden habe wie stelle auf PHP 5.3.2 um haben nicht geholfen und aus den symlinks kann ich nicht einfach so ordner machen.

Hat einer ne Idee wie ich jetzt meine Klasse instanzieren kann?

Danke schon mal für die Mühe.

Viele Grüße typonewbe
PS: habs nicht ins Extbase Forum geschrieben da der Scheduler damit nix zu tun hat.

typonewbe ·

Hallo TYPO3 Freunde,

ich bin zumindest eine Erkenntnis reicher. Wenn ich makeInstance mit anderen Klassen aufrufe z.B.

class Tx_MyExt_Utility_Scheduler extends tx_scheduler_Task {
	public function execute() {
	    try{
			t3lib_div::devlog('--- funtzt ---', 'my_ext', 0);	    	
			$test = t3lib_div::makeInstance('Tx_Extbase_Dispatcher');
			t3lib_div::devlog(print_r($test,true), 'my_ext', 0);
			
			return true;
	    } catch(Exception $e ){
	    	t3lib_div::devlog('--- Hier gabs wohl ein Problem ---', 'my_ext', 0);
	    	return false;
	    }
	}
}

auch funktioniert das instanzieren des Blogexamples
t3lib_div::makeInstance('Tx_BlogExample_Domain_Model_Blog');

jetzt stehe ich bissl auf dem Schlauch.
Erste Vermutung war Probleme GroßKlein Schreibung ist es aber nicht
Zweite Vermutung war das er den Pfad nicht finden konnte und nur innerhalb von typo3 Klassen findet. Ist es aber auch nicht

Da das BlogExample funktioniert muss ich davon ausgehen das es Probleme mit meiner Extension gibt allerdings weiß ich nicht wo.
Die Extension wurde Registriert und Funktioniert im FE Tadellos
Augenscheinlich sind die Pfade und Klassennamen auch ok.

typo3conf/ext/my_ext/Classes/Utility/Scheduler.php mit
class Tx_MyExt_Utility_Scheduler extends tx_scheduler_Task

und
typo3conf/ext/my_ext/Classes/Task/Queue.php mit
class Tx_MyExt_Task_Queue extends Tx_Extbase_Dispatcher

Der Aufruf
t3lib_div::makeInstance('Tx_MyExt_Task_Queue');
bringt den Fatal Error

wie kann das sein?#angry#

Gibts ne Stelle wo ich eventuell vergessen habe meine Klasse oder Extension bekannt zu machen?

Danke schon mal für die Mühe

Grüße typonewbe

Tevsa ·

moin,

vielleicht die Reihenfolge?

Ich schreibe auch grade eine Extension um mit eid eine Mail aus deine formular zu senden. Dabei fiel mir auf , das der Aufruf der call erst passieren kann nachdem die class erstellt wurde. Ist "ins Blaue" getippt, da ich deinen Quellcode nicht kenne....

Gruß
Tevsa

typonewbe ·
aemka schrieb

Steht deine Klasse denn in der ext_autoloader.php ?

Nein stand Sie nicht 🙂
Es stand nur die Tx_MyExt_Utility_Scheduler in der ext_autoloader.php.

Dann hab ich mir mal das Blogbeispiel etwas genauer angesehen und festgestellt das die da so ziemlich alles in die ext_autoloader hauen. Also hab ich die Tx_MyExt_Task_Queue auch mal in der ext_autoloader registriert und siehe da es klappt juhu.

Selber drauf gekommen aber dennoch Danke an euch beide.

Ansonsten hätte spätestens der Post von aemka geholfen 🙂

Viele Grüße typonewbe