bytenetizen / fast-replace
为 Laravel 框架提供快速替换文本。
Requires
- php: ^8.1
- illuminate/console: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/database: ^9.21|^10.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0
This package is auto-updated.
Last update: 2024-09-19 13:05:44 UTC
README
简介
Fast Replace for Laravel 是一个强大且灵活的包,旨在简化 Laravel 框架中的文本操作任务。针对寻求效率和简单的开发者,该包提供了一系列工具,用于轻松地转换和操作 Laravel 应用程序中的文本数据。
性能
性能比较是在 PHP 8.2.1 和 MariaDB 10.6.12 上进行的,文本大小为 62069 个字符,存在重复键。测量进行了 3 次和 200 次迭代。结果将是 Fast Replace / Fast Replace 缓存 / Str::replace / Str::replace 缓存。
所以...
未从类中接收到数据
Fast Replace: 15.844359 秒 / 15.579132 秒 / 16.032425 秒
Fast Replace 和缓存: 0.294150 秒 / 0.259240 秒 / 0.236989 秒
Str::replace: 17.547049 秒 / 17.112469 秒 / 16.710757 秒
Str::replace 缓存: 3.934095 秒 / 4.042395 秒 / 4.094361 秒
我们提供现成数据
Fast Replace: 0.004951 sec / 0.005213 sec / 0.005084 sec
Str::replace: 0.008216 sec / 0.004294 sec / 0.006443 sec
文本大小 498183 个字符
Fast Replace: 0.038984 sec / 0.047993 sec / 0.038661 sec
Str::replace: 0.049044 sec / 0.050786 sec / 0.057625 sec
Fast Replace Memory usage: 1009496 bytes Peak memory usage: 1513256 bytes
Str::replace Memory usage: 1004624 bytes Peak memory usage: 1888072 bytes
文本大小 1565024 个字符
Fast Replace: 0.237349 sec / 0.255545 sec / 0.253437 sec
Str::replace: 0.698960 sec / 0.260386 sec / 0.160027 sec
Fast Replace Memory usage: 3151704 bytes Peak memory usage: 5387896 bytes
Str::replace Memory usage: 3155024 bytes Peak memory usage: 6201160 bytes
仍然感兴趣?那么让我们继续...
官方文档
步骤 1
composer require bytenetizen/fast-replace
步骤 2
php artisan migrate
php artisan replace:seed
配置
life_cache default 10080 minute
use_cache default true
is_debug default false
添加 .env *可选
REPLACE_CACHE_LIFE=1
REPLACE_USE_CACHE=false
REPLACE_IS_DEBUG=false
使用 Fast Replace
use Bytenetizen\FastReplace\Facades\Replace;
注意:可以使用选项组合!
要使用缓存并接收最新信息,请使用 uni 选项
$arr = [
'uni'=>'',// user_id/ order_id ...
'arrPlaceholder'=>['TEST'=>'Yap! Good test!','MY_NAME'=>'Promitey'],
];
选项:1 立即传递参数
$arr = [
'arrPlaceholder'=>['TEST'=>'Yap! Good test!','MY_NAME'=>'Promitey'],
];
$startText = '{{TEST}} Lorem ipsum dolor sit amet, my name {{MY_NAME}}, consectetur adipiscing elit';
$finishText = Replace::transform($startText,$arr);
echo $finishText;
"Yap! Good test! Lorem ipsum dolor sit amet, my name Promitey, consectetur adipiscing elit";
选项:2 使用类
$startText = '{{TEST}}, {{NOW_TIME}} Lorem ipsum dolor sit amet, my name {{MY_NAME}}, consectetur adipiscing elit';
$finishText = Replace::transform($startText);
echo $finishText;
"Hello world! PieceTest!, Wednesday 15th of November 2023 05:51:27 PM Lorem ipsum dolor sit amet, my name , consectetur adipiscing elit"
创建新类
php artisan make:placeholder PieceMyNew
app/Services/PieceMutators/PieceMyNew.php
插入 DB 新占位符
INSERT INTO `placeholders`(`piece`, `doer`, `admin_id`, `comments`) VALUES ('MY_NEW','App\Services\PieceMutators\PieceMyNew','1','my first Piece')
下一步
$startText = '{{MY_NEW}}!!! {{TEST}}, {{NOW_TIME}} Lorem ipsum dolor sit amet, my name {{MY_NAME}}, consectetur adipiscing elit';
$finishText = Replace::transform($startText);
echo $finishText;
"PieceMyNew!! Hello world! PieceTest!, Wednesday 15th of November 2023 06:52:34 PM Lorem ipsum dolor sit amet, my name , consectetur adipiscing elit"
类
use Bytenetizen\FastReplace\PieceMutators\Piece;
class PieceMyNew extends Piece
{
public function getValue(): string
{
$this->placeholder; //The object itself is accessible Bytenetizen\ValueSwapper\Models\Placeholder
$this->settings; //an array ($arr) is available with settings passed to $finishText = SwapperText::transform($startText,$arr);
//for example, you can pass the user id and then do manipulations with the user object
$userId = $this->settings['user_id']??null;
$user = User::find($userId);
return $user->name??'';
}
}
使用类
$startText = '{{MY_NEW}}!!! {{TEST}}, {{NOW_TIME}} Lorem ipsum dolor sit amet, my name {{MY_NAME}}, consectetur adipiscing elit';
$finishText = Replace::transform($startText);
echo $finishText;
调试
$arr = [
'arrPlaceholder'=>['TEST'=>'Yap! Good test!','MY_NOT_NAME'=>'Promitey'],
];
$startText = '{{TEST_NOT_DATA}} Lorem ipsum dolor sit amet, my name {{MY_NAME}}, consectetur adipiscing elit';
$finishText = Replace::transform($startText,$arr);
echo $finishText;
"!_EMPTY_{{TEST_NOT_DATA}}_! Lorem ipsum dolor sit amet, my name !_EMPTY_{{MY_NAME}}_!, consectetur adipiscing elit"
清理占位符
如果不需要占位符,可以将其删除
$startText = '{{TEST_NOT_DATA}} Lorem ipsum dolor sit amet, my name {{MY_NAME}}, consectetur adipiscing elit';
$arrDel = ['TEST_NOT_DATA','MY_NAME'];
$cleanText = Replace::cleanPlaceholder($startText,$arrDel);
echo $cleanText;
"Lorem ipsum dolor sit amet, my name , consectetur adipiscing elit'
贡献
感谢您考虑为 Fast Replace 贡献!
许可
Laravel Tinker 是开源软件,使用 MIT 许可证授权,详情请见 LICENSE.md。