2016-07-23 5 views
2

나는 laravel에서 네임 스페이스로 고심하고있다. 나는 laravel new를 한 후에 프로젝트를위한 표준 폴더 구조를 가지고있다. 그래서 나는 모든 내 데이터 액세스 클래스를 넣어 응용 프로그램 폴더에 DATAACCESS라는 폴더를 추가 그래서 다음과 같은 구조를 가지고 :Laravel 5.2 namespace

PROJECTDIR> 응용 프로그램> DATAACCESS> dataaccessclasses (파일)

내 모든 DATAACCESS 클래스가 모든 클래스의 맨 위에있는 네임 스페이스 App (나는 이것을 단순하게 만들었습니다). 이제 내 컨트롤러에서 나는 내 DATAACCESS 클래스를 사용할 수 있도록 나는 정상에 이것을 추가 :

<?php use App; ?> 

을하지만 Laravel은 내 DATAACCESS 클래스를 찾을 수 있음을 알려줍니다 및 컨트롤러의 네임 스페이스가 상대적으로 해결하려고합니다. Container.php 라인 794에

ReflectionException : 앱 \ HTTP를 \ 컨트롤러 StockDataAccess이 존재하지 않는 \ 클래스 여기 나를 뱉어 오류입니다.

이 모든 것이 무엇을 의미하는지 알 수 있습니다. 기본적으로

답변

1

app 폴더 PSR-4 자동로드 사양

당신의 app 폴더의 하위 폴더에 클래스를 선언 할 때 그래서, 당신은 App 네임 스페이스를 사용하는 것이 아니라, 특정 하위 폴더의 경로에 네임 스페이스 상대를 따른다. 예를 들어,이 클래스의

:

app > dataaccess > dataaccessclasses > StockDataAccess.php 

은 사용한다 :

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 

클래스 정의 파일입니다. 컨트롤러에서 클래스를 사용하려면 사용해야합니다

use App\dataaccess\dataaccessclasses\StockDataAccess; 
+0

이를 시도 덤프 그것과 그것은 여전히 ​​같은 오류로 끝납니다. 나는 이것이 의미하는 바를 이해하기 위해 psr-4에 대해 읽었지만 슬프게도 그녀는 일하지 않고 있다고 말했다. –

+0

@Eagletrophy : 그것은 당신에게 같은 오류를 준다? 컨트롤러에서'use App \ dataaccess \ dataaccessclasses \ StockDataAccess;'를 사용한다면 적어도 그 디렉토리에있는 클래스를 찾아야하므로 다른 에러가 발생합니다. PSR-4의 경우 예를 들어 앱 폴더 (예 : http/middleware ecc.)의 기존 Laravel 클래스를 살펴보면 모든 클래스의 네임 스페이스가 항상 클래스 파일 경로에 종속된다는 것을 알 수 있습니다. – Moppo

+0

나는 당신이 방금 설명했던 것에 반대하며 나는 여전히 같은 것을 얻고있다. php-fig를 사용하여 PSR-4 문서를 살펴본 후에도 여전히 내 오류가 어디에 있는지 알지 못하기 때문에 이것은 정말 실망 스럽습니다. 컨트롤러에 내 데이터 액세스 코드를 작성하고 이런 식으로 작업하는 것을 잊어 버리겠습니다. 그러나 이것은 나에게 laravel 버그가 창이나 다른 경로의 경로를 제대로 해석 할 수 없다는 느낌을줍니다. 어쨌든 도와 주셔서 감사합니다 moppo –

0

당신이 "응용 프로그램 \의 DATAACCESS의 \의 dataaccessclasses"로 composer.json 에서 classmap를 업데이트해야하고 실행 작곡가 당신이 말한대로