错误异常:implode():弃用数组后传递胶水字符串。交换参数

2022-08-30 13:55:34

我正在运行Laravel 5.8并在播种时收到此错误

Seeding: CategoriesTableSeeder

错误异常:implode():弃用数组后传递胶水字符串。交换参数

at /Users/saly/Sites/Saly/vendor/fzaninotto/faker/src/Faker/Provider/Lorem.php:95

91|
92|         $words = static::words($nbWords);
93|         $words[0] = ucwords($words[0]);
94|
95|         return implode($words, ' ') . '.';
96|     }
97|
98|     /**
99|      * Generate an array of sentences
  Exception trace:

  1   implode(" ")
      /Users/saly/Sites/Saly/vendor/fzaninotto/faker/src/Faker/Provider/Lorem.php:95

  2   Faker\Provider\Lorem::sentence()
      /Users/saly/Sites/Saly/vendor/fzaninotto/faker/src/Faker/Generator.php:222

>  Please use the argument -v to see more details.

该应用程序使用PHP 7.3和7.2在CI中通过测试,因此问题可能是我的本地计算机“OSX”中的PHP 7.4

这是我的种子文件

<?php

use Saly\Category;
use Illuminate\Database\Seeder;

class CategoriesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(Category::class, 3)->create();
    }
}

和工厂

<?php

use Saly\Category;
use Faker\Generator as Faker;

$factory->define(Category::class, function (Faker $faker) {
    $name = $faker->sentence(4, true); // Here maybe?
    return [
        'name' => $name,
        'slug' => sluggify($name),
    ];
});

我认为问题出在使用行的位置,但我不知道如何解决它,因为我刚刚从Faker文档中复制了该行sentence()

此错误是什么意思,我该如何解决它?


答案 1

此问题已在最新版本的 Faker 中修复。在你的错误中,它说

> 95| return implode($words, ' ') . '.';

但是如果我们看一下源代码的第95行,我们会看到:

> 95| return implode(' ', $words) . '.';

因此,您需要做的就是拉出最新版本的Faker,可能是通过做

composer update fzaninotto/faker

答案 2

您可以交换(在具有命令的情感行中)胶水和数组。implode

例:

return implode($words,' ') . '.'; 

return implode(' ',$words) . '.';

此外,最新版本的软件包解决了这个问题。fzaninotto/faker


推荐