语法错误,意外的“=>”(T_DOUBLE_ARROW)

syntax error, unexpected '=>' (T_DOUBLE_ARROW)

上下文 我刚刚使用 Laravel/Jetstream 和 Inertia 开发了一个内部业务应用程序,它使用了一个模型广播器,Ably 集成了桌面通知。一切都在本地完美运行,所以我今天下午上线了。我已迁移所有内容,似乎已正确设置,并且 https 正常工作。

服务器是 DO 上的 LEMP 液滴 Link到图片详情:https://marketplace.digitalocean.com/apps/lemp?ipAddress=143.198.148.3#getting-started

问题: 我读到的关于这个问题的所有内容都说它可能是 php 早于 7.4 的版本问题,但这里不是这种情况

phpinfo()的结果:(我今天刚注册,所以不能包含图片)

PHP 版本 7.4.3

图片位于: https://i.ibb.co/C1qZyjZ/Screen-Shot-2021-07-21-at-3-56-20-PM.png

var_dump(PHP_VERSION)

的结果
字符串(5)“7.4.3”

我的 Model Broadcaster 内部是错误的来源。

<pre><code>namespace App\Models; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Database\Eloquent\BroadcastsEvents; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Broadcasting\Channel; class Ticket extends Model { use BroadcastsEvents, HasFactory; /** * Get the channels that model events should broadcast on. * * @param string $event * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn($event) { return match($event) { // //This is the line // 'created' => [new Channel('ticket')], default => [] }; } }

Laravel 显示相同格式的文档: https://laravel.com/docs/8.x/broadcasting#model-broadcasting

<pre><code>/** * Get the channels that model events should broadcast on. * * @param string $event * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn($event) { return match($event) { 'deleted' => [], default => [$this, $this->user], }; }

匹配是 php8 特征。您可以将 php7.4 更新为 8 或使用 switch

switch($event)
    case 'created':
        return [new Channel('ticket')];
    default:
        return [];
endswitch;