2017-04-05 4 views
0

J'ai commencé un projet sur Laravel 5.4 aujourd'hui et ai eu un problème ServiceProvider. Voici mon fournisseur de services:Laravel - Fournisseur de services: Classe non trouvée

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 

class WizamProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap the application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     //die('YESSS'); 
    } 

    /** 
    * Register the application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     $this->app->bind('Wizam\Test', function() 
     { 
     if(class_exists("Domains\Domomat\Test")) 
      return new \Domains\Domomat\Test; 
     else 
      return new \Core\Classes\Test; 
     }); 
    } 
} 

J'ajouté ce fournisseur dans config/app.php (App\Providers\WizamProvider::class), vidage mon chargeur automatique comme vingt fois, le cache clair, config claire. Rien ne s'est passé.

Voici mon itinéraire:

Route::get('/sub', function() 
{ 
    $test = new \Wizam\Test(); 
    echo $test->render(); 
}); 

Quand je vais à '/ sous', je me suis Class 'Wizam\Test' not found. Je ne peux pas voir mon erreur, pouvez-vous m'aider?

Merci!

+0

Avez-vous configuré le chargement automatique de vos classes dans votre 'composer.json'? De plus, si vous voulez utiliser le conteneur, appelez-le comme ceci: 'app (\ Wizam \ Test :: class)' –

+0

Pour les classes existantes oui! Je ne l'ai pas fait pour \ Wizam parce qu'il n'existe pas techniquement. – Treast

+0

MERCI !! 'app (\ Wizam \ Test :: class)' fonctionne très bien !!! – Treast

Répondre

0

Pour utiliser le conteneur que vous ne pouvez pas instancier en utilisant la nouvelle commande, vous pouvez l'injecter par le constructeur

__constructor(\Wizam\Test $test) 
{ 
} 

ou en utilisant l'application (\ Wizam \ Test :: class) Je crois dans l'autre sens pour le faire comme mentionné dans les commentaires.