Hallo,
wenn ich eine kleine Hilsklasse mit kleinen Hilfsfunkionen innerhalb einer extbase Extension unterbringen will, wo sollte man diese am besten unterbringen?
Gibt es hier spezielle Namenskonventionen?
Muss diese dann über include eingebunden werden oder steht diese automatisch zur Verfügung?
Gruß, Alex
Irgendwo (glaube in der Mailinglist) habe ich gelesen, dass man sowas am besten unter Classes/Utility/ ablegt.
Wenn Du dabei den Namenskonventionen folgst, findet sie der Autoloader auch.
Z.B. Classes/Utitity/Foo.php -> class Tx_Myext_Utility_Foo {}
Gruß Kai
ok danke das klingt gut - aber wie soll man dann eine methode im controller aufrufen können?
so schon mal nicht
Tx_Myext_Utility_Foo::function();
Hm, warum nicht? Bei mir hat das bisher so funktioniert...
Muss man zuvor ein Objekt erstellen?
Fatal error: Class 'Tx_WtTwitter_Utility_Div' not found in ...
Nö, statische Methode sollte auch funktionieren. Irgendwie findet der Autoloader wohl die Klasse nicht. Alle Schreibfehler ausgeschlossen? Camelcase, etc.?
Keine Chance - kennst du eine Beispielextension die das irgendwo nutzt?
Das ist seltsam. Hast Du das auch wirklich unter Classes/Utility abgelegt? Der Autoloader funktioniert nämlich nur unter Classes/.
Die hier verwendet das z.B. auch: http://forge.typo3.org/projects/extension-extbase_pager/repository
Dort sehe ich allerdings, dass die das in der ext_autoload.php eingetragen haben. Das musste ich nicht machen.
Habe das selber schon für eine Kunden-Extension verwendet, kann ich hier aber leider nicht veröffentlichen. Das Schema war aber genau so wie von mir oben beschrieben.
Wenn Du den Autoloader debuggen willst findest Du den hier: extbase/Classes/Utility/ClassLoader.php
Der wird registriert im extbase/Dispatcher.php (Tx_Extbase_Dispatcher::initializeClassLoader())
Hallo Kai,
wiedermal ein guter Tipp von dir!
Der Fehler lag klar auf meiner Seite:
Die Datei darf natürlich nicht div.php heißen sondern Div.php
Damit funktionierts auch über den Scope:
<?php
class Tx_WtTwitter_Utility_Div {
public static function x() {
return 'xxx';
}
}
?>
// ohne die Leerzeichen - Bug im Forum hier
echo Tx_WtTwitter_Utility_Div : : x ();