如何解决语法错误,意外的“=>”T_DOUBLE_ARROW
背景 我刚刚使用 Laravel/Jetstream 和 Inertia 完成了一个内部业务应用程序的开发,该应用程序使用了一个集成了 Ably 的模型广播器,用于桌面通知。一切都在当地完美运行,所以我今天下午直播。我已迁移所有内容,并且似乎已正确设置,https 工作正常。
服务器是 DO 上的 LEMP droplet 图片详情链接:https://marketplace.digitalocean.com/apps/lemp?ipAddress=143.198.148.3#getting-started
问题: 我所读到的有关该问题的所有内容都表明 php 版本问题可能早于 7.4,但这里并非如此
phpinfo()的结果:(我今天刚注册,所以不能包含图片)
PHP Version 7.4.3
图片位于: https://i.ibb.co/C1qZyjZ/Screen-Shot-2021-07-21-at-3-56-20-PM.png
var_dump(PHP_VERSION)的结果
string(5) "7.4.3"
我的模型广播器内部是错误的根源。
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
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,default => []
};
}
}
解决方法
匹配是 php8 的特性。您可以将 php7.4 更新为 8 或使用 switch
switch($event)
case 'created':
return [new Channel('ticket')];
default:
return [];
endswitch;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。