2016-01-16 2 views
1

Я создаю Laravel 5.2 пакет, следующие мои файлыLaravel 5 Пользовательский класс пакет не найден

пакеты/
-Shreeji/
--Ring/
--- composer.json
- -src/
---- Ring.php
---- RingModel.php
---- RingServiceProvider

composer.json

{ 
"name": "shreeji/ring", 
"description": "Simple", 
"license": "MIT", 
"authors": [ 
    { 
     "name": "author", 
     "email": "[email protected]" 
    } 
], 
"autoload": { 
     "psr-4": { 
      "Shreeji\\Ring\\": "src/" 
     } 
    }, 
"minimum-stability": "dev", 
"require": { 
    "Illuminate/support": "~5" 
} 
} 

Ring.php

namespace Shreeji\Ring; 

use Illuminate\Http\Response; 

Class Ring { 

private $ringmodel; 
protected $table_name = null; 


function __construct() { 

} 

function set_table($table_name) 
{ 
    $this->table_name = $table_name; 
    $this->ringmodel = New RingModel($this->table_name); 
    return $this; 
} 

} 

RingModel.php

use \Illuminate\Database\Eloquent\Model as Eloquent; 

class RingModel extends Eloquent { 

// Set table name; 
protected $table; 
protected $primary_key; 

public function __construct($table) 
{ 
    $this->table = $table; 
} 
} 

RingServiceProvider.php

namespace Shreeji\Ring; 

use Illuminate\Support\ServiceProvider; 

Class RingServiceProvider extends ServiceProvider 
{ 
public function register() 
{ 
    $this->app->bind('ring', function($app){ 
     return new Ring; 
    }); 
} 

public function boot() 
{ 

} 
} 

И в приложение/Http/Контроллеры я создал тестовый файл, как это

RingController.php

namespace App\Http\Controllers; 

use App\Http\Controllers\Controller; 
use Shreeji\Ring; 

class RingController extends Controller 
{ 

public function index() 
{ 
    $ring = New Ring(); 
    $ring->set_table('ring'); 
} 
} 

В routes.php

Route::get('ringtest', [ 'as' => 'ringtest', 'uses' => '[email protected]' ]); 

я добавил поставщика услуг в конфигурации/app.php, как

Shreeji\Ring\RingServiceProvider::class, 

В composer.json я добавил это как

..... 
"psr-4": { 
     "App\\": "app/", 
     "Shreeji\\Ring\\": "packages/Shreeji/Ring/src" 
    } 
..... 

Когда я вызываю ringtest из браузера, я получаю следующую ошибку.

FatalErrorException в RingController.php строке 19: Class «Shreeji \ Ring» не найден

Что случилось с моим кодом, почему этот класс не найден Я также запустить композитор dumpautoload.

ответ

4

В контроллере у вас есть:

use Shreeji\Ring; 

Но, это должно быть:

use Shreeji\Ring\Ring; 

Первый 'Кольцо' является каталог (имен). Второе «Кольцо» - это класс.

Ваша модель не находится в вашем пространстве имен. Первая строка вашей модели должна быть:

namespace Shreeji\Ring; 
+0

Спасибо за это его работу. но теперь я получаю ошибку в Ring.php о FatalErrorException в строке Ring.php 21: Class 'Shreeji \ Ring \ RingModel' не найден, вы можете мне помочь с этим тоже – user2293790

+0

Правильно, первая строка вашей модели должна быть: namespace Shreeji \ Ring; Таким образом, ваша модель находится в вашем пространстве имен. – schellingerht

+0

Я ненавижу laravel по этой причине.Сложность и чувствительность механизмов загрузки смехотворна / – bagnap

Смежные вопросы