web-dev-qa-db-fra.com

Classe 'Poussoir' introuvable

Lorsque j'ai installé le package Pusher, j'ai reçu une erreur "Classe 'Pusher' introuvable".

6
user8294451

Le diagnostic de Claudio est correct, le namespace Pusher a été ajouté dans la version 3; mais changer les fichiers Laravel n'est pas une solution recommandée.

Un meilleur moyen consiste à créer un alias dans config/app.php. Sous la clé 'aliases', ajoutez ceci au tableau de la section "Alias ​​de tiers":

'Pusher' => Pusher\Pusher::class,
25
Larry Reinhard

(OP a donné la réponse suivante à la question. Le problème sous-jacent est que la version 3 de pusher-php-server introduit un espace de noms et requiert donc maintenant use Pusher\Pusher.)

Créez cette commande:

namespace App\Console\Commands;

use Illuminate\Support\Facades\File;
use Illuminate\Console\Command;

class FixPusher extends Command
{

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'fix:pusher';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Fix Pusher namespace issue';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $broadcastManagerPath = base_path('vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php');
        $pusherBroadcasterPath = base_path('vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php');

        $contents = str_replace('use Pusher;', 'use Pusher\Pusher;', File::get($broadcastManagerPath));
        File::put($broadcastManagerPath, $contents);

        $contents = str_replace('use Pusher;', 'use Pusher\Pusher;', File::get($pusherBroadcasterPath));
        File::put($pusherBroadcasterPath, $contents);
    }
}

Ajoutez ensuite "php artisan fix:pusher" au fichier composer.json:

"post-update-cmd": [
   "php artisan fix:pusher",
   "Illuminate\\Foundation\\ComposerScripts::postUpdate",
   "php artisan optimize"
]
1
jameshfisher

Avec la version 3 de Pusher, j'ai réalisé que l'espace de nom de Pusher\Pusher avait été modifié. Si configure par composer lorsque vous définissez le fichier .env, BROADCAST_DRIVER = pusher, cela indique cette erreur. En consultant le journal, vous pouvez savoir où se trouve le problème, situé dans ce fichier: 

'vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php "

. Il est nécessaire de changer les références pour Pusher\Pusher au lieu de Pusher, comme dans l'image:  enter image description here

recherchez ensuite la fonction PusherBroadCaster et modifiez le poussoir de référence pour Pusher\Pusher.

 enter image description here

vendor/laravel/framework/src/Illuminate/Diffusion/Diffuseurs/PusherBroadcaster.php

1
Claudio Djohnnatha

Il suffit d'aller au vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php.__ et de changer "Utiliser le poussoir" en "Utiliser le poussoir/pousseur";

0
Telemarque Ernest