3

我正在尝试制作与typo3 7.6.4 兼容的pi 基础扩展。但我无法制作以下代码的兼容版本

$this->feUserObj = tslib_eidtools::initFeUser();                
// Connect to database:         
tslib_eidtools::connectDB();

它抛出错误:找不到类 tslib_eidtools。如何转换 tslib_eidtools 类,使其与typo3 7 兼容?

4

1 回答 1

2

在 TYPO3 7.6 LTS 的 Core File 中,建立数据库连接的代码位于 core/Classes/Database/DatabaseConnection.php 中。您不必创建此类的对象。

您可以从 TYPO3 全局常量 $GLOBALS['TYPO3_DB'] 中获取 DB 对象和连接参数。参考点击这里

您可以使用此全局对象编写自定义 mysql 查询。

例子 :

$results = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows (
                                         $select_fields, 
                                         $from_table, 
                                         $where_clause, 
                                         $groupBy= '', 
                                         $orderBy= '', 
                                         $limit= '', 
                                         $uidIndexField= '' );

TYPO3 "database wrapper" 类(3.6.0 新增) 这个类包含

  • 用于执行 INSERT/UPDATE/DELETE/SELECT 查询的抽象函数(“查询执行”;这些是所有未来与数据库的连接所必需的,从而确保 DBAL 合规性!)

  • 用于构建 SQL 查询的函数(INSERT/UPDATE/DELETE/SELECT)
    (“查询构建”);这些是用于以更自动化的方式构建 SQL 查询的过渡函数。使用这些来构建查询,而不是
    在代码中手动执行!

  • mysqli 包装函数;这些是过渡功能。通过简单的搜索/替换,您应该能够用 $GLOBALS['TYPO3_DB']->sql*() 替换所有 mysql*() 调用,并且您的应用程序将开箱即用。您不能(合法地)使用任何未找到的 mysqli 函数作为此类中的包装函数!有关最佳实践的更多说明,请参阅项目编码指南 (doc_core_cgl)

在 TYPO3 6.2 的大多数情况下,您也不需要使用此 connect() 方法

于 2016-04-11T11:29:39.487 回答