bytenetizen/fast-replace

为 Laravel 框架提供快速替换文本。

1.0.0 2023-11-19 11:01 UTC

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