【问题标题】:After upgrading Laravel from 5.6 to 6.0, Call to undefined str_random() function not working将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用
【发布时间】:2020-01-29 11:36:18
【问题描述】:

我已将 Laravel 从 5.6 升级到 6.0。以前,默认帮助函数在控制器上运行良好,但现在它显示“undefined”。在我的控制器中,我使用了以下内容。

$filename = str_random(12);

我收到以下错误。

消息:“调用未定义的函数 应用\Http\Controllers\str_random()"

我也用过random() 函数,它的意思是一样的。

有人可以指导我怎么做吗?

我已经运行了类似的命令:

composer dump-autoload

但我得到了同样的错误。

【问题讨论】:

  • 就我而言,str_random() 已在 5.8 中删除,看起来根本不受支持。试试这个:laravel.com/docs/6.x/helpers#method-str-random
  • 能否请您在文档中的哪个位置发布“这些功能”仍受支持? laravel.com/docs/6.x/helpers#method-str-random 说是Str::random()
  • @kerbholz : 你好先生,我很抱歉,我已经看到 5.6 文档代替 6.0 现在我已经拉下顶部选择框并将版本设置为 6.0,我看不到你有什么写的是对的

标签: php laravel laravel-6 laravel-helper laravel-upgrade


【解决方案1】:

影响的可能性:高Laravel 6 Upgrade Guide

在 Laravel 6 中,所有 str_array_ 助手都已移至新的 laravel/helpers Composer 包并从框架中删除。如果需要,您可以更新对这些帮助程序的所有调用以使用 Illuminate\Support\StrIlluminate\Support\Arr 类。或者,您可以将新的 laravel/helpers 包添加到您的应用程序以继续使用这些帮助程序:

composer require laravel/helpers

如果不想添加 Package,则使用 StrArr 类。

例如:

Str::random(12)

https://laravel.com/docs/master/helpers#method-str-random

【讨论】:

  • Str::replace 不存在,而是我可以使用什么?如果我想替换为?
  • 使用内置的str_replace函数,否则按照我的回答。
【解决方案2】:

添加以下字符串库。

use Illuminate\Support\Str;

现在你可以像下面这样使用它了。

$filename = Str::random(40)

或者,安装以下软件包。

composer require laravel/helpers

【讨论】:

    【解决方案3】:

    在我的例子中,我没有在我的应用程序代码中使用任何字符串助手,所以我只需要删除已编译的类文件:

    php artisan clear-compiled
    

    【讨论】:

      【解决方案4】:

      使用代码::

      <?php
      
      namespace App\Http\Controllers;
      
      use Exception;
      use Illuminate\Support\Str;
      use Illuminate\Support\Arr;
      use Illuminate\Http\Request;
      use Illuminate\Support\Facades\DB;
      use Illuminate\Support\Facades\Log;
      
      
      
         public function index()
          {
              $count=15;
              try {
                  DB::statement('truncate users');
                  DB::beginTransaction();
                  while ($count--){
                      $id = DB::table('users')->insertGetId( [
                          'name'=>'Sample'.$count,
                          'password'=>random_int(1000000,99999999)
                      ]);
                      foreach (range(1,rand(1,3)) as $index ){
                          DB::insert('INSERT INTO posts (userid,title,body) VALUES (:userid,:title,:body)',[
                                  'userid'=>$id,
                                  'title'=>str::random(15),
                                  'body'=>str::random(50),
                              ]);
                      }
                      DB::commit();
                  }
              }catch (\Exception $errors){
                  DB::rollBack();
                  Log::error($errors);
                  return "mission filed";
              }
          }
      

      【讨论】:

      • 冗余代码太多,抱歉。
      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 2019-01-31
      • 2020-01-19
      • 2017-06-10
      • 2019-12-19
      • 2020-01-11
      • 2019-02-06
      • 2021-10-16
      相关资源
      最近更新 更多