Как вызвать класс в мое расширение с помощью автозагрузки. Я использую typo3 7.6. Из учебников я понял, что для typo3 7.6 это можно сделать в файле ext_emconf.php. Как написать то же самое в ext_emconf.php ?? Мой файл класса находится в Classes/class.x.php.Функция автозагрузки typo3 7.6
ответ
Все классы автоматически регистрируются в функции автоматической загрузки до тех пор, пока вы будете следовать конвенции код: https://docs.typo3.org/typo3cms/ExtbaseFluidBook/a-CodingGuidelines/Index.html
class.x.php не является допустимым именем файла для класса в Extbase
. Если вы хотите создать ClassX то имя файла должно быть:
/your_extension/Classes/ClassX.php
<?php
namespace YourName\YourExtension;
class ClassX {
}
Обратите внимание, что имя расширения также превращается в UpperCamelCase. Для части поставщика (YourName в примере) вы можете выбрать что-либо, что действительно в PHP.
теперь вы можете получить доступ к вам класс с
$test = new \YourName\YourExtension\ClassX();
Ваше расширение, очевидно, должно быть установлено для работы.
!!! Имейте в виду, что Typo3 создает только кеш автозагрузки при установке/удалении расширения. Если вы добавляете новые файлы в уже установленное расширение, вы должны удалить этот файл кэша вручную
/typo3temp/autoload/autoload_classmap.php
Чтобы конфигурировать автозагрузку классов, которые не делают ни одного совпадения по умолчанию имен вы можете создать в своем расширении в ext_autoload.php
. Внутри кода выглядит следующим образом:
<?php
return array(
'Tx_SomeExtension_Someclass' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('some_extension') . 'pi1/someclass.php',
);
Если вы разрабатываете для Typo3 7.x, имейте в виду, что pibased устарел и поддерживается только с расширением совместимости, которая приносит много недостатков в производительности. Я бы рекомендовал больше не использовать расширение pibase.
Было очень полезно. Но я немного смущен, как написать функцию автозагрузки в файл ext_emconf.php моего расширения. Из учебника я обнаружил, что 'autoload' => array ( 'classmap' => array ('Classes') ), функция автозагрузки должна быть записана в этой форме. Но что это за классная карта? Это мой класс, ClassX ?? – Ques
Мое расширение зависит от трех других расширений, которые находятся в pibase. Поэтому моя задача - развить в них новые классы и вызывать эти классы в моем расширении, которое находится в extbase. Не могли бы вы мне помочь ? – Ques
Я обновил сообщение с примером файла автозагрузки –