2014-12-18 3 views
0

laravel에서 추상 클래스를 사용하는 데 문제가 있습니다. 나는이 튜토리얼 http://culttt.com/2014/03/17/eloquent-tricks-better-repositories을 따르고 있지만 코드를 실행하면 "클래스를 찾을 수 없음"오류가 발생합니다.Laravel 클래스가 없습니다 + 추상 클래스

내가 서비스 제공에 클래스를 바인더 제본 한

여기 내 코드

RepositoriesServiceProvider.php

<?php namespace Repositories; 

use Illuminate\Support\ServiceProvider; 

class RepositoriesServiceProvider extends ServiceProvider { 

    public function register() 
    { 
    $this->app->bind(
    'Repositories\User\UserRepository', 
    'Repositories\User\EloquentUserRepository', 
    'Repositories\User\AbstractEloquentRepository' 

    ); 
    } 

} 

?> 

EloquentUserRepository.php의

namespace Repositories\User; 

use User; 

class EloquentUserRepository extends AbstractEloquentRepository implements UserRepository{ 

    protected $model; 

    public function __construct(User $model){ 

     $this->model = $model; 

    } 


    public function find($id){ 

     return User::find($id); 

    } 


    public function create($input){ 

     return User::create($input); 

    } 

} 

?> 

AbstractEloquentRepository.php

<?php 

    abstract class AbstractEloquentRepository{ 

    public function all(){ 

     return $this->model->all(); 

    } 


} 

?> 
,

UserRepository.php

<?php 

namespace Repositories\User; 

interface UserRepository{ 

    public function all(); 

    public function find($id); 

    public function create($input); 
} 

?> 

UserController.php

<?php 
    use Repositories\User\UserRepository as User; 

    class UserController extends BaseController { 

    /* 
    |-------------------------------------------------------------------------- 
    | Default Home Controller 
    |-------------------------------------------------------------------------- 
    | 
    | You may wish to use controllers instead of, or in addition to, Closure 
    | based routes. That's great! Here is an example controller method to 
    | get you started. To route to this controller, just add the route: 
    | 
    | Route::get('/', '[email protected]Welcome'); 
    | 
    */ 


    public function __construct(User $user){ 

     $this->user = $user; 

    } 


    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 

    public function index() 
    { 
     return $this->user->all(); 
    } 

    // public function showWelcome() 
    // { 
    // return View::make('hello'); 
    // } 






} 
+0

여기에 오류가 있습니다. http://screencast.com/t/GysgRTea – codepinoys

답변

2

AbstractEloquentRepository.php 파일에 네임 스페이스가 없습니다.

0

그들에게 한 번에 하나의 ...

$this->app->bind('Repositories\User\UserRepository', function(){ 
    return new \Repositories\User\UserRepository(); 
} 
+0

나는 그것을 시도했지만 운이 없습니다. 이 오류 메시지가 "인터페이스 저장소 \ 사용자 \ UserRepository을 인스턴스화 할 수 없습니다." – codepinoys

+0

컨트롤러와 클래스 코드를 표시해야합니다. – fire

+0

위의 코드를 참조하십시오. 감사합니다 – codepinoys

0

사용 php artisan dump-autoload 및 터미널 composer dump-autoload 모든 클래스 파일을 재생하는 바인딩보십시오 . 이것이 귀하의 문제를 해결할 수 있기를 바랍니다.

+0

안녕 Sumit, 나는 이미 그랬지만 여전히 오류가 존재합니다. – codepinoys

+0

이 오류가 발생했습니다. 인터페이스 저장소 \ User \ UserRepository를 인스턴스화 할 수 없습니다. – codepinoys