Problème avec les namespaces, obligé de mettre \ à chaque fois

Par benbox69, il y a 9 ans


Bonjour,

J'utilise Laravel 5.2 pour un projet. A la base je suis plus à l'aise avec CakePHP, mais j'avais envie de changer.

Quand j'utilise un package avec Laravel, par exemple Toastr (https://github.com/oriceon/toastr-5-laravel) je suis obligé de rajouter un \ devant le singleton :

\Toastr::success('message');

Si je ne le mets pas, j'obtiens ce joli message d'erreur:

Class 'App\Http\Controllers\Toastr' not found

C'est aussi vrai avec l'utilisation d'un modèle, je ne peux pas faire :

$user = new App\User;

Il faut que je fasse :

$user = new \App\User;

J'espère que j'ai correctement expliqué mon problème.
Merci

Ben

7 réponses

Onouriis, il y a 9 ans

Quel est le problème ? Si tu ne souhaites pas avoir ça, tu peux utiliser le use

benbox69, il y a 9 ans

Donc c'est le comportement normal?

Onouriis, il y a 9 ans

Oui.
Mais je te conseille d'utiliser les use, c'est un peu plus propre pour s'y retrouver. Enfin c'est un avis personnel.

benbox69, il y a 9 ans

Du coup je ne comprends pas trop l'intéret des façades...

J'ai ajouté:

'Toastr' => 'narutimateum\Toastr\Facades\Toastr'

dans mes allias...

Onouriis, il y a 9 ans

Oui parce que les alias sont utilisés mais en dehors des class. Par exemple si tu veux utiliser Toastr dans une vue, tu mets :
{{ Session::get('tonelement') }}, tu auras un echo de la valeur tonelement dans la session.
C'est la même chose, quand tu regardes les routes, quand tu fais Route::get('/bidule', 'HaController@index'), j'imagine que ça fonctionne grâce à l'alias défini dans l'app.php.

benbox69, il y a 9 ans

Ok j'ai compris, merci

Onouriis, il y a 9 ans

Haha, j'ai mis Toastr et j'ai pris Session en exemple...

Bonne continuation.