Когда я устанавливаю пакет Pusher, я получаю сообщение об ошибке «Класс« Pusher »не найден».
Класс Pusher не найден.
Ответы (4)
Диагноз Клаудио верен, пространство имён Pusher было добавлено в версии 3; но изменение файлов Laravel не рекомендуется.
Лучше создать псевдоним в config/app.php
. Под ключом aliases добавьте это в массив в разделе «Сторонние псевдонимы»:
'Pusher' => Pusher\Pusher::class,
php "pusher/pusher-php-server": "~3.0"
php в свой файл composer.json, а затем добавил псевдоним, и он отлично сработал.
- person Humble Hermit; 05.08.2019
В версии 3 Pusher я понял, что пространство имен для Pusher \ Pusher изменилось. Если настроить композитор при установке .env, BROADCAST_DRIVER = pusher, он показывает эту ошибку. Просматривая журнал, вы можете узнать, в чем проблема, в этом файле:
'vendor / laravel / framework / src / Illuminate / Broadcasting / BroadcastManager.php "
. Необходимо изменить ссылки для Pusher \ Pusher вместо Pusher, как на изображении:
затем найдите функцию PusherBroadCaster и измените ссылку Pusher на Pusher \ Pusher.
vendor / laravel / framework / src / Illuminate / Broadcasting / Broadcasters / PusherBroadcaster.php
(OP опубликовал в вопросе следующий ответ. Основная проблема заключается в том, что версия 3 pusher- php-server представляет пространство имен, поэтому теперь требуется use Pusher\Pusher
.)
Создайте эту команду:
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);
}
}
Затем добавьте "php artisan fix:pusher"
в composer.json
файл:
"post-update-cmd": [
"php artisan fix:pusher",
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
Просто перейдите к vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php
и измените «Использовать толкатель» на «Использовать толкатель / толкатель»;