2016-07-28 15 views
1

So rufen Sie eine Klasse in meine Erweiterung mit Autoload. Ich benutze typo3 7.6. Aus den Tutorials habe ich verstanden, dass dies für typo3 7.6 in der Datei ext_emconf.php gemacht werden kann. Wie schreibe ich das gleiche in ext_emconf.php ?? Meine Klassendatei befindet sich in Classes/class.x.php.Autoload-Funktion typo3 7.6

Antwort

4

Alle Klassen sind in einer Autoload-Funktion so lange automatisch registriert, wie Sie den Code Konventionen folgen: https://docs.typo3.org/typo3cms/ExtbaseFluidBook/a-CodingGuidelines/Index.html

class.x.php ist kein gültiger Dateiname für eine Klasse in Extbase. Wenn Sie eine ClassX erstellen wollen, dann hat der Dateiname sein:

/your_extension/Classes/ClassX.php

<?php 

namespace YourName\YourExtension; 

class ClassX { 

} 

Beachten Sie, dass die Erweiterungsnamen auch in Uppercamelcase verwandelt. Für den Anbieter-Teil (YourName im Beispiel) können Sie alles auswählen, was in PHP gültig ist.

jetzt können Sie Sie Klasse zugreifen mit

$test = new \YourName\YourExtension\ClassX(); 

Ihre Erweiterung muss natürlich arbeiten installiert werden.

!!! Denken Sie daran, dass Typo3 den Autoload-Cache nur generiert, wenn Sie eine Erweiterung installieren/deinstallieren. Wenn Sie auf eine bereits installierte Erweiterung neue Dateien hinzufügen haben Sie diese Cache-Datei manuell zu löschen

/typo3temp/autoload/autoload_classmap.php 

Um das automatische Laden von Klassen zu konfigurieren, dass kein Spiel die Standard tun Namensgebung Sie eine ext_autoload.php in Ihrer Erweiterung zu schaffen. Innerhalb der Code sieht so aus:

<?php 

return array(
    'Tx_SomeExtension_Someclass' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('some_extension') . 'pi1/someclass.php', 
); 

Wenn Sie Typo3 7.x entwickeln, bedenken Sie, dass pibased veraltet ist und nur mit der Kompatibilität Erweiterung unterstützt, die eine Menge von Nachteilen in der Leistung bringt. Ich würde empfehlen, pibased Erweiterung nicht mehr zu verwenden.

+0

Es war wirklich hilfreich. Aber ich bin etwas verwirrt darüber, wie man Autoload-Funktion in die Datei ext_emconf.php meiner Erweiterung schreibt. Von einem Tutorial habe ich festgestellt, dass, 'autoload' => Array ( 'Klassenmap' => Array ('Klassen') ), Autoload-Funktion muss in dieser Form geschrieben werden .. Aber was ist das classmap? Ist es mein Klassenname, ClassX? – Ques

+0

Meine Erweiterung ist abhängig von drei anderen Erweiterungen, die in pibase sind. Also ist es meine Aufgabe, neue Klassen in diese zu entwickeln und diese Klassen in meine Extension zu nennen, die in extbase ist. Kannst du mir bitte Helfen ? – Ques

+1

Ich habe meine Post mit einem Beispiel für eine Autoload-Datei aktualisiert –

Verwandte Themen