Composerが動きません 誰か助けて
解決したいこと
composerが正常に動きません!
index.phpをlocalでうごかそうとしているんですがエラーがでて動かないです。
エラーを見る限り該当するphpファイルにクラスがないよとのことなんですが、そのphpファイルにそのクラスが定義されたファイルがインポートされてるようなので、どうすればよいかわかりません。
発生している問題・エラー
Fatal error: Uncaught Error: Class 'src\Controllers\TestController' not found in C:\MAMP\htdocs\composertest\index.php:7 Stack trace: #0 {main} thrown in C:\MAMP\htdocs\composertest\index.php on line 7
該当するソースコード
<?php
require_once __DIR__ . '/vendor/autoload.php';
use src\Controllers\TestController;
$src = new TestController;
$src->run();
?>
関連するコード
TestController.php
<?php
namespace src\Controllers;
use src\Models\TestModel;
class TestController{
public function run(){
$model = new TestModel;
echo $model->getHello();
}
}
?>
TestModel.php
<?php
namespace src\Models;
class TestModel {
private $text = 'hello world';
public function getHello(){
return $this->text;
}
}
?>
### 自分で試したこと
udemyの授業でやっていたことなのでコードを再確認した、
なるべく早く解決したいのでどこかおかしい記述のぶぶんがあったりしたら優しく教えてほしいです!
0
Class 'src\Controllers\TestController' not found
ファイルが正しく読み込まれていないか、use
やnamespace
に誤りがあったりするとこのようなエラーが出ます。
PHPの基本ですが、ファイル読み込みはinclude
やrequire
で一つずつ読み込んでいきます。
これを簡単にしてくれるのがComposerのAutoloadingです。
ただし、/vendor/autoload.php
を読み込んだだけで機能するわけではありません。
ドキュメントを読みつつ、これらの点を確認してください。
-
composer.json
のautoload
設定 -
dump-autoload
コマンド - ファイル、ディレクトリ構造
- ファイル名と名前空間(
use
、namespace
)
2Like
回答ありがとうございます。コマンドプロンプトの方でdump-autoloadをやってみると表示するようになりました。@blue32aさんが言ってるようなcomposerの役割は
全然わかってなかったので、とても勉強になります
0Like