2016-07-23 10 views
2

私はlaravelの名前空間に苦労しています。私はlaravel newを行った後、プロジェクトの標準的なフォルダ構造を持っています。Laravel 5.2 namespaces

PROJECTDIR>アプリ> DATAACCESS> dataaccessclasses(ファイル)

とすべての私のDATAACCESSクラスが持っている:私はので、私はそれには、以下の構造を有しているにすべての私のデータアクセスクラスを置くappフォルダにDATAACCESSというフォルダを追加しましたすべてのクラスのトップにある名前空間App(私はこれを単純化するためにこれを行った)。今私のコントローラで、私は私のDATAACCESSクラスを使用することができますので、私が先頭にこれを追加します。

<?php use App; ?> 

をしかし、Laravelは、それは私のDATAACCESSクラスを見つけることができないことを私に告げると、コントローラの名前空間に対する、それを解決しようとします。 Container.phpライン794で

ReflectionException:ここではそれは私に吐くエラーでクラス のApp \のHttp \コントローラは\ StockDataAccessは存在しません。

このすべてが何を意味するかについては、どのような点でも分かりますか?デフォルトで

答えて

1

appフォルダがPSR-4自動ロード仕様

あなたappフォルダのサブフォルダ内のクラスを宣言するときに、あなたがApp名前空間を使うべきではありませんが、特定のサブフォルダのパスに名前空間の相対に従います。たとえば、このクラスで

app > dataaccess > dataaccessclasses > StockDataAccess.php 

はあなたが使用する必要があります。

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 

あなたのクラス定義ファイルインチあなたが使用する必要がありますコントローラでクラスを使用するには:あなたは「アプリの\ DATAACCESSの\のdataaccessclasses」と実行作曲とcomposer.json にクラスマップを更新する必要が

use App\dataaccess\dataaccessclasses\StockDataAccess; 
+0

をダンプそれはまだ同じエラーで終了します。私はpsr-4について読んでいますが、これが何を意味するのかを理解するために悲しいことに、彼女は働いていません。 –

+0

@Eagletrophy:それはあなたに同じエラーを与えますか?あなたのコントローラーで 'use App \ dataaccess \ dataaccessclasses \ StockDataAccess;'を使うと、少なくともそのディレクトリのクラスを探して別のエラーを出すはずです。 PSR-4では、アプリケーションフォルダ内の既存のLaravelクラス(http /ミドルウェアecc。)を見てみると、すべてのクラスの名前空間が常にクラスファイルパスに依存することがわかります – Moppo

+0

私はあなたが今説明したものに反しているが、私はまだ同じことをしている。これは本当にイライラしています。なぜなら、PSR-4文書をphp-figで調べても、私のエラーがどこにあるのかはまだ分かりません。私は私のコントローラの中に自分のデータアクセスコードを書き、このようにするのを忘れてしまいます。しかし、これは、私のララベのバグのように、ウィンドウや何かのパスを正しく解決できないように感じます。とにかく助けてくれてありがとうmoppo –

0

は、あなたが言ったと同じようにこれを試し