2016-07-28 7 views
1

Как вызвать класс в мое расширение с помощью автозагрузки. Я использую typo3 7.6. Из учебников я понял, что для typo3 7.6 это можно сделать в файле ext_emconf.php. Как написать то же самое в ext_emconf.php ?? Мой файл класса находится в Classes/class.x.php.Функция автозагрузки typo3 7.6

ответ

4

Все классы автоматически регистрируются в функции автоматической загрузки до тех пор, пока вы будете следовать конвенции код: 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.

+0

Было очень полезно. Но я немного смущен, как написать функцию автозагрузки в файл ext_emconf.php моего расширения. Из учебника я обнаружил, что 'autoload' => array ( 'classmap' => array ('Classes') ), функция автозагрузки должна быть записана в этой форме. Но что это за классная карта? Это мой класс, ClassX ?? – Ques

+0

Мое расширение зависит от трех других расширений, которые находятся в pibase. Поэтому моя задача - развить в них новые классы и вызывать эти классы в моем расширении, которое находится в extbase. Не могли бы вы мне помочь ? – Ques

+1

Я обновил сообщение с примером файла автозагрузки –