質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1060閲覧

【Laravel5.5】自分が作ったクラスをuseしたい

nnahito

総合スコア2004

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/11/03 12:44

はじめに

Laravel初心者です。
Silexを触っていましたが、Laravelが良いということを聞き、Laravel5.5を昨日よりはじめました。

質問概要

自作のモデルを作成したが、Class 'App\Model\Dao\AirticeDao' not foundのようなエラーが出る。
これは何故?

質問

「はじめに」にも記載させていただきましたが、Laravel初心者です。
以前までSilexを利用しておりましたが、Laravelが良いということを同僚より聞き、始めてみました。

早速Laravel5.5をcomposerにてインストールしてみました。
しかし、modelを置くフォルダがなかったので、appフォルダ配下にModel/Dao/フォルダを作成し、その中にDao用のPHP(AirticeDao.php)を作成しました。

↓構成

イメージ説明


そのAirticeDao.phpファイルの中身が以下の通りになります。
※Windowsユーザなので、バックスラッシュが円マークになっているかもしれません。
※エディタ(Atom)上ではバックスラッシュ表記になっております。

php

1<?php 2 3namespace App\Model\Dao; 4 5 6class AirticeDao 7{ 8 9 public function __construct(){ 10 echo 'hello'; 11 } 12 13} 14

そして呼び出し側のControllerでは以下のようにしております。

php

1 2<?php 3 4namespace App\Http\Controllers; 5 6use App\User; 7use App\Http\Controllers\Controller; 8use App\Model\Dao\AirticeDao; 9 10/** 11 * indexページのコントローラー 12 */ 13class IndexController extends Controller 14{ 15 16 public function index() { 17 $dao = new AirticeDao(); 18 19 return view('index'); 20 } 21 22} 23

さらにcomposer dump-autoloadを行いました。


しかし、
Class 'App\Model\Dao\AirticeDao' not found
というエラーが消えません。

これは何故なのでしょうか?

ご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。

参考

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Composerのcomposer.jsonは以下のようにする必要があります。

json

1{ 2 "autoload" : { 3 "psr-4" : { 4 "App\Model\Dao" : "app/model/dao/" 5 } 6 } 7}

書いたら composer dumpautoloadを実行します。

投稿2017/11/05 02:32

naohiro19_

総合スコア178

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

質問の画像が状況を反映しているのであれば、ファイル名は、ArticleDao.phpなのに、クラス名がAirticeDaoになっています(lが抜けている)。
composer.jsonに記載のautoloadのPSR-4設定として、ディレクトリパスとクラス名の不一致で読み込めないかと思うので、修正してcomposer dump-autoloadをしてみてください。

投稿2017/11/03 12:53

編集2017/11/03 12:54
aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnahito

2017/11/03 12:56

ご回答ありがとうございます! ……タイポでしたね……全く気が付きませんでした…… お恥ずかしい。 お時間いただき誠にありがとうございました。 テストで作った雑なクラスだからと言って、そのあたりを疎かにしてはいけないという教訓ができました
aro10

2017/11/03 13:00

Laravelでコマンドラインでのエラーの場合は、原因箇所が特定しにくい時があるので、以下のLaravelNews紹介の[nunomaduro/collision]を入れておくと適切なエラー行位置がわかり解決が早くなる事があります。 [Collision Is An Error Handler Framework for Console Applications](https://laravel-news.com/collision-error-handler-framework)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問