#やりたいこと
参考テキストに沿って、Laravel(5.5)の学習を進めています。イベント機能を利用して、会員登録時にメールを送信する機能を実装したいです。ログイン成功時のログインした利用者の情報をログ出力する処理を作成していますが、リスナークラスを作成するコマンド(php artisan event: generate)を実行すると下記のエラーが出ます。
In EventServiceProvider.php line 34:
Parse error: syntax error, unexpected 'protected' (T_PROTECTED), expecting
end of file
メッセージを見る限り、構文エラーですが、文字の抜けや誤字、括弧([])の閉じ忘れも無さそうです。対処方法をご教示ください。
#やったこと
- メール送信設定
→envファイルのメール設定を変更
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
2.イベントとリスナーのファイル作成
→イベントクラスはLaravelの認証処理に標準で含まれているらしいので、リスナーのみ実装します。app/Providers/EventServiceProvider.phpに下記のコードを追記。
protected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
//会員登録イベントのリスナーを発行(追加)
'Illuminate\Auth\Events\Registered' => [
'App\Listeners\RegisteredListener',
],
];
3.コマンドラインでsampleappフォルダに移動して、
リスナークラスを作成するコマンド [php artisan event :generate]を実行
→下記のエラー
In EventServiceProvider.php line 34:
Parse error: syntax error, unexpected 'protected' (T_PROTECTED), expecting
end of file
4.エラーメッセージの原因調査
→"Parse error: syntax error, unexpected 'protected~"をネットで調べると、
誤字や抜け字だった場合に出る構文エラーですが、[EventServiceProvider.php]ファイルには参考テキストのソースコードをそのまま追記しており、コロンやセミコロンの間違い、括弧([])の抜け等はなさそうです。
#ソースコード
//C:\Users\%USERPROFILE%\code\sampleapp.env APP_NAME=Laravel APP_ENV=local APP_KEY=base64:yUv95TkO1CJ0ROcQ/ehqG/Cm2SQm5RyYWkdSQCAOfx4= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file SESSION_LIFETIME=120 QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=localhost MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1
//C:\Users\%USERPROFILE%\code\sampleapp\app\Providers\EventServiceProvider.php <?php namespace App\Providers; use Illuminate\Support\Facades\Event; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider { /** * The event listener mappings for the application. * * @var array */ protected $listen = [ 'App\Events\Event' => [ 'App\Listeners\EventListener', ], ]; /** * Register any events for your application. * * @return void */ public function boot() { parent::boot(); // } } protected $listen = [ 'App\Events\Event' => [ 'App\Listeners\EventListener', ], //会員登録イベントのリスナーを発行(追加) 'Illuminate\Auth\Events\Registered' => [ 'App\Listeners\RegisteredListener', ], ];
#参考テキスト
『PHPフレームワーク Laravel Webアプリケーション Webアプリケーション開発』
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/18 15:09