references:
paolo mainardi
symfony è un framework per php di cui mi hanno parlato molto bene nella chat #symfony di irc.azzurra.org
dopo aver valutato p4a e (parzialmente) zend-framework ho deciso di provare piu approfonditamente symfony.
punti di forza:
- l’integrazione con pear, a cui sono molto affezionato:
“PEAR è il sistema più professionale per installare librerie in PHP. symfony suggerisce caldamente di utilizzare PEAR, in maniera tale da avere un punto centrale di installazione sul quale creare diversi progetti. Il plug-ins di symfony sono pacchetti PEAR dotati di particolari configurazioni. Lo stesso symfony framework è disponibile come pacchetto PEAR.”
- l’interazione con i database
“Propel is an Object-Relational Mapping (ORM) framework for PHP5. It allows you to access your database using a set of objects, providing a simple API for storing and retrieving data.”
- struttura MVC (Model-View-Controller)
Il tutto puo’ essere efficaciemente sintetizzato in questo schema:
di seguito descrivo la strada che seguo per apprendere e provare questo framework. chi volesse seguirmi in questa roadmap si faccia vivo sul canale di azzurra o postando qui
references:
sito
manuale (addirittura in italiano!)
(ma serve aiuto per completarne la traduzione)
24 tutorial per conoscere symfony
il punto di partenza che ho scelto dopo un primo giro nel sito è stato il manuale.
Nei primi due capitoli vengono presentati le metodologie di programmazione:
RAD Rapid Application development
ASD Agile software development
per poi passare ai concetti di MVC ed ai primi esempi.
INSTALLAZIONE
la parte importante arriva con l’installazione, al capitolo 3.
PREREQUISITI:
- apache2 con supporto per php5 e pear
non installo sandbox: voglio qualcosa di definitivo, non un ambiente da test. lo faccio installando symfony mediante pear come descritto nella guida.
io uso ubuntu feisty e tutto fila liscio come l’olio
damko@radioshocked:~$ sudo pear channel-discover pear.symfony-project.com
Password:
Adding Channel “pear.symfony-project.com” succeeded
Discovery of channel “pear.symfony-project.com” succeeded
damko@radioshocked:~$ sudo pear install symfony/symfony
downloading symfony-1.0.6.tgz …
Starting to download symfony-1.0.6.tgz (1,905,514 bytes)
………………….done: 1,905,514 bytes
install ok: channel://pear.symfony-project.com/symfony-1.0.6
inizializzo il primo progetto:
mkdir projects/dam/correnti/sym
cd projects/dam/correnti/sym
symfony init-project myproject
ed ottengo la seguente struttura di directory
.
|– apps
|– batch
|– cache
|– config
| |– config.php
| |– databases.yml
| |– propel.ini
| |– properties.ini
| |– rsync_exclude.txt
| `– schema.yml
|– data
| |– model
| `– sql
|– doc
|– lib
| `– model
|– log
|– plugins
|– symfony
|– test
| |– bootstrap
| | |– functional.php
| | `– unit.php
| |– functional
| `– unit
`– web
|– css
| `– main.css
|– images
|– js
|– robots.txt
`– uploads
`– assets
ora inizializzo la prima applicazione
symfony init-app myapp ecco il risultato:aggiusto un po le cose:- in /var/www/ creo un collegamento alla directory "web" del progetto (ovvero laddove viene"renderizzato" il sito vero e proprio)- creo un virtual host per apache di nome sym seguendo questi step:echo "NameVirtualHost sym DocumentRoot "/var/www/web/"DirectoryIndex index.phpAlias /sym "/var/www/web/" Options Indexes MultiViews FollowSymLinksAllowOverride NoneOrder deny,allowDeny from allAllow from 127.0.0.0/255.0.0.0 ::1/128 " > /etc/apache2/sites-available/sym cd /etc/apache2/sites-enabled ln -s ../sites-available/sym . /etc/init.d/apache2 restart echo "127.0.0.1 sym" >> /etc/hosts ora posso aprire un browser e digitare http://sym e trovarmi all'interno della directory/var/www/web TUTORIALsono pronto per seguire il primo tutorial, come descritto nel manuale creo il primo modulo:symfony init-module myapp mymodule e questo è il risultato che posso vedere puntando il browser suhttp://sym/myapp_dev.php/mymodule/indextutto funziona e sono pronto per il classico "Hello world".in symfony, la logica di una pagina è memorizzata nelle azioni, mentre la presentazionein template. Le pagine senza una logica avranno bisogno comunque di un'azione vuota. seguo passo passo la guida: rm templates/indexSuccess.php e riscrivo il file delle azioni ( actions/actions.class.php ) includendo un'azione vuota forward('default', 'module');}*/public function executeMyAction(){}} ora scrivo il file della view (template)echo " Hello World! " > templates/myActionSuccess.php questo è il risultato che visualizzo puntando il browser suhttp://sym/myapp_dev.php/mymodule/myAction (come spiegato piu avanti nel libro questo èl'output dell'ambiente di sviluppo, mentre l'output di produzione è visibile puntando suhttp://sym/index.php/mymodule/myAction)A questo punto ho terminato il quarto capitolo del manuale e sono "in grado" di scriverela mia prima applicazione. CONFIGURAZIONE DI SYMFONYIl quinto capitolo verte tutto sulla configurazione di symfony e dei relativi file yaml.Secondo il mio modo di vedere le cose allo stato attuale quelle informazioni non sono di grandeutilità. C'è però da sapere che symfony ha un meccanismo proprio per la definizione dellecostanti per l'applicazione. Quindi in corso di sviluppo dell'applicazione sarà bene ricordarloed utilizzare tale meccanismo per trarne tutti i vantaggi.
Postato in: DNI








bene, come puoi immaginare io ci sono.
Agile e’ la metodologia cui mi sta “iniziando” anche Danilo sul ns progetto http://www.vimprint.com , qualcosa in fondo alla quale io sono sempre stato vicino:
- Customer satisfaction by rapid, continuous delivery of useful software
- Even late changes in requirements are welcomed
- Face-to-face conversation is the best form of communication
- Projects are built around motivated individuals, who should be trusted
- Regular adaptation to changing circumstances
be Agile!
la speranza è quella di trovare strumenti realmente “agili”