Namespaces dans Laravel 4

Laravel est normalement fournit avec déjà des namespaces intégrés « controllers », « models ». Mais pour une plus bonne gestion de notre code, il peut-être bon d’ajouter de nouveaux namespaces; par exemple avoir un dossier app/services/ ou-et app/services/validation. Le rangement ne fait jamais de mal!

Facile :) il suffit de créer un dossier services dans /app/ et de glisser notre classe (fichier Plus.php):

<? // /app/services/Plus.php
namespace App\Services;

class Plus {
    static public function inc($value,$nb=1){
       return $value+=$nb; 
    }
}

facile!
Bon je vais tester tout ça dans un contrôleur :

<?php // /app/controllers/ContactUsController.php

class ContactUsController extends BaseController {
	public function getIndex()
	{
		$a= \App\Services\Plus::inc(1);
		echo $a;
		return View::make('frontend/pages/contact-us');
	}
}

Oops :( ça ne marche pas ?

$a= App\Services\Plus::inc(1);

Toujours le même message : classe App/Service/Plus non trouvée :(


Et oui, il faut ajouter ce namespace a notre projet et pour cela nous devons utiliser composer(.phar) :

Ajoutez dans le fichier composer.json votre namespace:

...	
"autoload": {
	"classmap": [
	    "app/commands",
	    "app/controllers",
	    "app/models",
                    "app/services"
	]
},
...

Exécutez la commande dans la console :

composer dump-autoload

et la miracle votre code fonctionne, vous avez un nouvel espace de nommage pour bien organiser votre code.
Vous n’avez maintenant plus de droit de mettre des classes diverses dans « /app/controllers/ ».

Share Button

Vous devriez aimer...