bugo/smf-compat

用于与SMF中的全局变量和已弃用的函数一起工作的包装器

0.2.1 2024-09-17 18:20 UTC

This package is auto-updated.

Last update: 2024-09-29 02:43:54 UTC


README

SMF 2.1 PHP Coverage

俄语

描述

该软件包旨在为当前SMF 2.1修改准备迁移到3.0的方案。

提出的实用工具类消除了在修改代码中声明全局变量的需求。

因此,您的修改将在SMF 2.1和3.0上都能运行,只需进行最小更改。

安装

在修改的根目录下运行以下命令

composer require bugo/smf-compat

然后,在 app.php(或其他类似的 入口点),包含 autoload.php

require_once __DIR__ . '/vendor/autoload.php';

使用方法

旧代码

<?php

class Example
{
    public function method1()
    {
        global $txt;

        echo $txt['hello_world'];
    }

    public function method2()
    {
        global $user_info, $modSettings;

        echo $user_info['name'];

        var_dump($modSettings);
    }
}

新代码

<?php

use Bugo\Compat\Lang;
use Bugo\Compat\User;
use Bugo\Compat\Config;

class Example
{
    public function method1()
    {
        echo Lang::$txt['hello_world'];
    }

    public function method2()
    {
        echo User::$info['name'];

        var_dump(Config::$modSettings);
    }
}

升级到SMF 3.0后,只需替换使用的类即可

-use Bugo\Compat\Lang;
+use SMF\Lang;
-use Bugo\Compat\User;
+use SMF\User;
-use Bugo\Compat\Config;
+use SMF\Config;

或者您可以将它保持原样。在这种情况下,您的修改将支持SMF的这两个版本。

建议替换列表

全局变量

函数

SSI函数

在3.0之前通过 ssi_function_name 调用的 SSI.php 中的所有函数在3.0中都是这样调用的:ServerSideIncludes::function_name

与数据库一起工作

在兼容模式下,您可以使用 Utils::$smcFunc['db_query'] 等,但也引入了一个新的类 Db,它有一个静态属性 $db,包含当前数据库引擎的类。这个类的方法与 Utils::$smcFunc 中的函数类似,但没有 db_ 前缀。以下是用三个常用函数的示例来展示

此库的用法示例