[Frage] Namespaces in Extensions ab Version 6.1 TYPO3-Version: 6.1.7

  • smeagul smeagul
    Padawan
    0 x
    58 Beiträge
    0 Hilfreiche Beiträge
    04. 03. 2014, 12:14

    Hallo,
    man soll bei der Extension Entwicklung eigene Namespaces verwenden.
    Nun ich habe es probiert, aber es hat nie geklappt.
    Ich habe im Controller einen Namespace nach dem Schema Vendorname\Extensionname\Controller angelegt.
    Aber er wurde nie angesprochen. Wenn ich hingegend den Namespace so Typo3\Extensionname\Controller definiert habe hat es geklappt.

    Wo wird denn dem System gesagt in welchem Namespace die Extension liegt?
    Wo muss eventuell noch der Namespace angegeben werden? Gibt es irgendwo ein HOWTO?
    Hat jemand ein Beispiel für eine Extension wo ein eigener Namespace angelegt wurde?


  • 1
  • Oliver Thiele Oliver Th...
    Sternenflotten-Admiral
    0 x
    188 Beiträge
    4 Hilfreiche Beiträge
    07. 03. 2014, 15:37

    Am einfachsten ist es, eine ganz einfache Extension mit dem Extension Builder (http://typo3.org/extensions/repository/view/extension_builder) zu bauen. Als Vendor-Namespace anstatt TYPO3 etwas eigenes und vor allem Eindeutiges verwenden. Zusammen mit dem ExtensionKey ergibt sich dann der Namespace. Nehmen wir an, "Mittwald" wäre der Vendor-Namespace und mm_forum der ExtensionKey, dann würde die Namespace-Angabe für ein Domain-Model User so aussehen:

    1. namespace Mittwald\MmForum\Domain\Model;
    2.  
    3. class User extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    4. //…
    5. }

    Der Namespace entspricht dabei in etwa dem Pfad im Dateisystem:
    typo3conf/ext/mm_forum/Classes/Domain/Model/User.php
    Mittwald\MmForum wird intern also zu "typo3conf/ext/mm_forum/". "mm_forum" wird im Namespace in UpperCamelCase geschrieben. Dann wird das Verzeichnis "Classes/" immer in den Pfad eingebaut. Da der Ordner immer vorhanden ist, muss dieser Ordner im Namespace ausgelassen werden. Dann kommt der Rest "/Domain/Model/" + [Klassenname]+ ".php"

    Also eigentlich muss man sich Namespaces nur wie Ordnerstrukturen vorstellen. Durch die strikte Namensvergabe ist sichergestellt, das ein Autoloader im php auch die Dateien zum inkludieren finden kann.

    Ich hoffe damit sind die Namespaces ein wenig verständlicher geworden ;)

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2886 Beiträge
    107 Hilfreiche Beiträge
    10. 03. 2014, 21:47

    Recht angenehm in Wort, Code und Layout erklärt Kai einiges zu Namespaces:
    http://www.speedprogs.de/anleitungen/detailansicht/extension-entwicklung-mit-namespaces.html

  • 1