Laravel es basa en l'estàndard de facto Composer per a la instal·lació d'aplicacions de terceres parts (Third Party) o en terminologia Laravel: packages. Els paquets són la principal forma d'afegir funcionalitat a Laravel (extending). Els paquets poden ser de múltiples tipus des de una llibreria per treballar amb dates com Carbon o un framework sencer de Testing com Behat.
Hi ha múltiples tipus de paquets però principalment els podem dividir en dos parts:
Els dos tipus de paquets es distribueixen utilitzant Packagist i Composer
TODO
Podeu trobar la documentació oficial a:
http://laravel.com/docs/5.0/packages
TODO
Info extreta de: https://github.com/laracasts/Laravel-5-Generators-Extended
En comptes d'afegir el proveidor de servei al fitxer:
config/app.php
Editeu el fitxer app/Providers/AppServiceProvider.php, like so:
public function register() { if ($this->app->environment() == 'local') { $this->app->register('Laracasts\Generators\GeneratorsServiceProvider'); } }
L5:
Laravel 4:
https://github.com/rtablada/package-installer https://github.com/terion-name/package-installer
Ni els controladors ni els models ni la lògica de negoci es publiquen des del paquet a l'aplicació Laravel és a dir que simplement es troben al paquet. Això sí, és important definir correctament la secció autoload al fitxer composer.json per tal que puguin ser utilitzats correctament a l'aplicació Laravel sense necessitat d'includes.
Per a Laravel 5 podeu veure com ho fa el paquet laracasts/Laravel-5-Generators-Extended:
https://github.com/laracasts/Laravel-5-Generators-Extended/blob/master/src/GeneratorsServiceProvider.php
Vegeu:
https://github.com/digital-baker/laravel-package-skeleton
Vegeu ace_template_laravel
Vegeu els meravellosos vídeos de laracast:
https://laracasts.com/series/russian-doll-caching-in-laravel/episodes/5 https://laracasts.com/series/russian-doll-caching-in-laravel/episodes/6
See project https://github.com/acacha/adminlte-laravel as an example.
When creating Laravel packages are easy to test them in a new laravel projecte instead of projecte package. You can automatize that with test bash script
#!/bin/bash ./sandbox_setup.sh cd sandbox phpunit cd .. ./sandbox_destroy.sh
sandbox_setup.sh file:
#!/bin/bash if ! type "laravel" > /dev/null; then composer global require "laravel/installer" fi if ! type "adminlte-laravel" > /dev/null; then composer global require "acacha/adminlte-laravel-installer=~1.0" fi rm -rf sandbox ~/.composer/vendor/bin/laravel new sandbox cd sandbox ~/.composer/vendor/bin/adminlte-laravel install touch database/database.sqlite
and
#!/bin/bash rm -rf sandbox
IMPORTANT: Your package have to install Tests on laravel test folder during installation
You can configure Travis with .travis.yml:
language: php php: - 5.5.9 - 5.6 - 7.0 - hhvm before_script: - composer self-update - composer install --prefer-source --no-interaction --dev - ./sandbox_setup.sh script: cd sandbox;phpunit after_script: - ./sandbox_destroy.sh