Home » Php » php – ErrorException : implode(): Passing glue string after array is deprecated. Swap the parameters

php – ErrorException : implode(): Passing glue string after array is deprecated. Swap the parameters

Posted by: admin July 12, 2020 Leave a comment

Questions:

Am running Laravel 5.8 and getting this error when seeding

Seeding: CategoriesTableSeeder

ErrorException : implode(): Passing glue string after array is deprecated. Swap the parameters

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.

The app is passing tests just fine in CI using PHP 7.3 and 7.2 so the problem might be PHP 7.4 in my local machine “OSX”

Here’s my seed file

<?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();
    }
}

And the factory

<?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),
    ];
});

I think the problem is in the line where sentence() is used but I can’t tell how to solve it because I just copied that line from the Faker docs

What does this error mean and how can I solve it?

Thanks in advance

How to&Answers:

This has already been fixed in the most recent version of Faker. In your error it says

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

but if we look at line 95 of the source we see:

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

So, all you need to do is pull the latest version of Faker, probably by doing

composer update fzaninotto/faker

Answer:

You can swap (in affect lines with implode command) glue and array.

Example:

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

to

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

also, The newest version of the fzaninotto/faker package solves this issue.

Answer:

This is happend for backward version of fzaninotto/faker. Update your faker using below command

composer update fzaninotto/faker