IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

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:

  • Standalone packages: Són paquets/llibreries generals que no estan creades especificament per a Laravel sinó que són de propòsit general com les esmentades Carbon o Behat. Aquests paquets s'instal·lan simplement definint-los al fitxer composer.json.
  • Laravel packages: paquets definits especialment per a Laravel. Aquests paquets poder proporcionar rutes, controladors, vistes, assets o configuracions extres a la nostra aplicació Laravel

Els dos tipus de paquets es distribueixen utilitzant Packagist i Composer

Versions

Abans Laravel 5

TODO

Laravel 5

Podeu trobar la documentació oficial a:

http://laravel.com/docs/5.0/packages

Instal·lació i ús de paquets

Procediment habitual

TODO

Afegint proveïdors de servei només per a un entorn concret

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');
    }
}

Automatització. Instal·ladors de paquets

L5:

Laravel 4:

https://github.com/rtablada/package-installer
https://github.com/terion-name/package-installer

Desenvolupament

Controladors, models i bussines logic

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.

Registrar comandes

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

Skeleton/Boilerplate/Scafoolding per a la creació de paquets

Vegeu:

https://github.com/digital-baker/laravel-package-skeleton

Exemple

Instal·lació d'una plantilla i adaptació de l'autenticació

Vegeu ace_template_laravel

Com realitzar testos i com provar els paquets

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

Testing (with Travis)

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

Vegeu també

Enllaços externs