如何在TYPO3中包含用于扩展的外部类


How to include External classes for extensions in TYPO3?

我有一个名为Menu的扩展,它需要文件夹ext/menu/Classes/HelperMenuHelper类的帮助。

如何在我的控制器中使用它?类"MenuHelper"只有在控制器文件夹中才会被访问。

我想在我的控制器中像这样使用它:

public function listAction() {
        $menugenerators=new MenuHelper(); # Will return something 
        $this->view->assign('menugenerators', $menugenerators);
}

如果将一个类放在目录yourExt/Classes/Helper/NestedDirectory/MenuHelper.php中,那么有两种方法可以在所有其他extbase文件中获取该类。

TYPO3> 6.0的第一种方法:使用命名空间

<?php
namespace YourVendor'YourExtension'Helper'NestedDirectory;
class MenuHelper {
}
?>

现在可以使用

创建该类的实例
$menuHelper = 'TYPO3'CMS'Core'Utility'GeneralUtility::makeInstance("YourVendor''YourExtension''Helper''NestedDirectory''MenuHelper")

或者直接使用

$menuHelper = new 'YourVendor'YourExtension'Helper'NestedDirectory'MenuHelper();

Second way with TYPO3 <= 4.7

<?php
class Tx_YourExtension_Helper_NestedDirectory_MenuHelper {
}
?>

现在可以使用

创建该类的实例
$menuHelper = t3lib_div::makeInstance("Tx_YourExtension_Helper_NestedDirectory_MenuHelper")

或者直接使用

$menuHelper = new Tx_YourExtension_Helper_NestedDirectory_MenuHelper();

类的名称将类装入器引导到源文件的正确路径。

文件的名称与类的名称相同非常重要。