前提
既存のシステムがあり、そこからエラー文章を引数にしてLaravel で組んだコントローラを起動させたいのですがなかなかうまくいきません。
Laravelの勉強の意味も含まれていますので、既存システムからエラー文章を送ればいいじゃんという答えはなしでお願いします。
エラー文章でControllerがないと言われているのですが、実際にはあるので、なぜこうなるのかが分からず困惑しております。
どうぞよろしくお願いいたします。
実現したいこと
既存システムのphp
php
1require_once (dirname(__DIR__,3).'\\test\\app\\Http\\Controllers\\GoogleChatController.php'); 2class test{ 3 public function main(){ 4 //テスト 5 try { 6 throw new Exception(’エラーテスト’); 7 } catch (Exception $e) { 8 $alert = new \App\Http\Controllers\GoogleChatController; 9 $alert->setError($e->message); 10 $alert->index(); 11 } 12} 13 14}
Laravelで組んだGoogleChat送信用システムのコントローラ(GoogleChatController.php)
php
1<?php 2 3namespace App\Http\Controllers; 4use App\Http\Controllers\Controller; 5use Illuminate\Http\Request; 6use App\Models\User; 7use App\Notifications\GoogleChat; 8// use Auth; 9// use Validator; 10class GoogleChatController extends Controller 11{ 12 private $err; 13 //受け取ったエラーをセット 14 public function setError(string $err) { 15 $this->err = $err; 16 } 17 //エラーをゲット 18 public function getError() :string { 19 return $this->err; 20 } 21 22 public function index() 23 { 24 $user = new User(); 25 $user->notify(new GoogleChat($this->err)); 26 } 27}
通知クラス
php
1<?php 2 3namespace App\Http\Controllers; 4use App\Http\Controllers\Controller; 5use Illuminate\Http\Request; 6use App\Models\User; 7use App\Notifications\GoogleChat; 8class GoogleChatController extends Controller 9{ 10 private $err; 11 //受け取ったエラーをセット 12 public function setError(string $err) { 13 $this->err = $err; 14 } 15 //エラーをゲット 16 public function getError() :string { 17 return $this->err; 18 } 19 20 public function index() 21 { 22 $user = new User(); 23 $user->notify(new GoogleChat($this->err)); 24 } 25} 26
発生している問題・エラーメッセージ
PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in C:\test\app\Http\Controllers\GoogleChatController.php:11
試したこと
composer dump-autoload
、composer install
、composer update
で試してから
既存のシステムを実行しましたが、やはり同じエラーでおわってしまいます。
Controller.phpもパスは間違っておらず、いじってません。
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 6use Illuminate\Foundation\Bus\DispatchesJobs; 7use Illuminate\Foundation\Validation\ValidatesRequests; 8use Illuminate\Routing\Controller as BaseController; 9 10class Controller extends BaseController 11{ 12 use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 13}
autoload.phpはあります
php
1<?php 2 3// autoload.php @generated by Composer 4 5if (PHP_VERSION_ID < 50600) { 6 echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; 7 exit(1); 8} 9 10require_once __DIR__ . '/composer/autoload_real.php'; 11 12return ComposerAutoloaderInit3d3d0927cc782fb75628c8586ae5587b::getLoader();
補足情報(FW/ツールのバージョンなど)
php(8.1)
Laravel(9.47.0)
回答4件