bugo / smf-compat
用于与SMF中的全局变量和已弃用的函数一起工作的包装器
0.2.1
2024-09-17 18:20 UTC
Requires
- php: ^8.0
- ext-intl: *
Requires (Dev)
- php: ^8.1
- pestphp/pest: ^2.33.4
- rector/rector: ^1.0
README
描述
该软件包旨在为当前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_
前缀。以下是用三个常用函数的示例来展示