1

我正在尝试在 TYPO3 6.2 中的 Extbase 上创建一个新的扩展,但我未能包含现有的类/框架模块。

我的 ext_autoload.php(ofc 位于我的扩展目录中)

$extensionPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('couponprinter');

return array(
    'ZendPdf' => $extensionPath . '/Classes/Utility/Zend/Pdf.php',
);

我正在尝试通过

$pdf = $this->objectManager->create('ZendPdf');

但是我遇到了错误“无法分析类:ZendPdf 可能没有加载或没有自动加载器?”

Zend 类本身有很多我无法重构的包含,所以我需要自动加载器。这是一个简短的片段:

/** Internally used classes */
require_once 'Zend/Pdf/Element.php';
require_once 'Zend/Pdf/Element/Array.php';
require_once 'Zend/Pdf/Element/String/Binary.php';
require_once 'Zend/Pdf/Element/Boolean.php';
require_once 'Zend/Pdf/Element/Dictionary.php';
require_once 'Zend/Pdf/Element/Name.php';
require_once 'Zend/Pdf/Element/Null.php';
require_once 'Zend/Pdf/Element/Numeric.php';
require_once 'Zend/Pdf/Element/String.php';

class Zend_Pdf{
// code of the class
}

由于 TYPO3 6.2 改变了一些旧方法,我不能再包含了。有谁知道如何将非命名空间类加载到 extbase 扩展中?

4

2 回答 2

0

你需要创建一个 ext_autoload.php 文件并用类似的东西填充它

<?php
$extensionClassesPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('news') . 'Classes/';

$default = array(
        'tx_news_domain_model_dto_emconfiguration' => $extensionClassesPath . 'Domain/Model/Dto/EmConfiguration.php',
        'tx_news_hooks_suggestreceiver' => $extensionClassesPath . 'Hooks/SuggestReceiver.php',
        'tx_news_hooks_suggestreceivercall' => $extensionClassesPath . 'Hooks/SuggestReceiverCall.php',
        'tx_news_utility_compatibility' => $extensionClassesPath . 'Utility/Compatibility.php',
        'tx_news_utility_importjob' => $extensionClassesPath . 'Utility/ImportJob.php',
        'tx_news_utility_emconfiguration' => $extensionClassesPath . 'Utility/EmConfiguration.php',
        'tx_news_service_cacheservice' => $extensionClassesPath . 'Service/CacheService.php',
);
return $default;
?>

http://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html的文档中找到

于 2015-03-06T14:55:22.587 回答
0

我想应该是

$extensionPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('couponprinter');

return array(
    'zendpdf' => $extensionPath . '/Classes/Utility/Zend/Pdf.php',
);

数组(键)的左侧必须小写。

于 2015-05-21T15:14:23.577 回答