0

根据TYPO3 V6 中的http://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html,鼓励使用命名空间,并且任何 PHP 文件都应该只包含一个类。从上面的链接引用

 - In TYPO3 every class must reside in its own file, i.e. there should
   be only one class per PHP file
 - Use the class naming convention and file location.

我的扩展是使用扩展生成器构建的。它使用 twitter API 库,并且有一个config.php要使用的文件。该文件包含multiple classes在其中。

问题是,要使用这个 config.php ,遵循这两个条件,我应该把它config.php分成多个 php 文件,每个文件都有一个类吗?

还是有一个非常巧妙的方法来解决这个问题?

4

2 回答 2

3

按照http://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html,正确的方法是在扩展的根文件夹中创建一个 ext_autoload.php 文件,其中包含:

$libraryClassesPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('your_ext_key') . 'Relative/Path/Of/Your/External/Library/';
return array(
'class_name_to_call' => $libraryClassesPath . 'class_file.php',
);

使用“FPDF”的示例

  1. 下载库并将其放入 /typo3conf/ext/myext/Resources/Private/Library/fpdf/
  2. 将此代码保存在 /typo3conf/ext/myext/ext_autoload.php

    $libraryClassesPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('myext') . 'Resources/Private/Library/';
    return array(
        'FPDF' => $libraryClassesPath . 'fpdf/fpdf.php',
    );
    
  3. 清除缓存

  4. 通过调用在您的扩展程序中的任何地方使用 FPDF:

    $pdf = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('FPDF');
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'Hello World!');
    $pdf->Output();
    
于 2014-03-13T15:45:39.377 回答
3

保持外部代码不变。编码指南仅适用于扩展和核心开发本身,您无需修改​​外部库以匹配该指南。

只需包含外部脚本

require_once t3lib_extMgm::siteRelPath('your_extension_key') . 'Path/to/the/Script.php';

并开始使用它们。

于 2013-07-22T10:16:50.680 回答