Un gioco in cui vincono tutti o due piccioni con una fava ;)
Lavorare rivolti alla creazione di valore per il cliente e da questo ottenere una libreria quasi pronta per essere pubblicata
Il processo di sviluppo basato sulla
collaborazione, sulla reciproca soddisfazione e
sul senso di responsabilità permette di ottenere
un alto valore per il cliente.
bundle = è una cartella con una struttura ben
definita, che può ospitare qualsiasi cosa, dalle
classi ai controllori e alle risorse web
http://symfony.com/it/doc/current/cookbook/bundles/best_practices.html
bundle = uno spazio dei nomi di PHP ovvero un
namespace, con con una classe Bundle
http://symfony.com/it/doc/current/cookbook/bundles/best_practices.html
bundle = una libreria sufficientemente astratta
da essere utilizzata in contesti diversi tra loro
class Article extends Translatable
{
/**
* @ORMOneToMany
* (targetEntity="ArticleI18n", mappedBy="translatable")
*/
protected $translations;
public function getTitle()
{
return $this->getTranslation()->getTitle();
}
}
Una volta testata anche l'integrazione e
verificato che la richiesta del cliente è stata
soddisfatta, abbiamo prodotto il valore richiesto
e ci possiamo fermare.
Il grosso è fatto, ora dovremo:
- esporre una configurazione semantica
- gestire le dipendenze (composer) e la configurazione dei test
- aggiungere la documentazione, la licenza ecc.
namespace PUGXI18nBundleDependencyInjection;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentConfigFileLocator;
use SymfonyComponentHttpKernelDependencyInjectionExtension;
use SymfonyComponentDependencyInjectionLoaderYamlFileLoader;
class PUGXI18nExtension implements Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$path = __DIR__.'/../Resources/config'
$loader = new YamlFileLoader($container, new FileLocator($path));
$loader->load('services.yml');
}
public function getAlias()
{
return 'pugx_i18n';
}
}