Giorno 1: Impostare il progetto
Introduzione
Il framework symfony è un progetto Open Source da più di quattro anni ed è diventato uno dei framework PHP più popolari grazie alle molte feature offerte e all'ottima documentazione. Questa tradizione è iniziata molto presto.
Questo libro descrive la creazione di una applicazione web passo-passo con il framework symfony dalle specifiche alla implementazione. È rivolto ai principianti che vogliono imparare symfony, capire come funziona e anche conoscere le migliori pratiche di sviluppo web.
L'applicazione da creare avrebbe potuto essere un'altra volta il motore di un blog. Ma vogliamo usare symfony per un progetto utile. L'obiettivo è dimostrare che symfony può essere usato per sviluppare applicazioni professionali con stile e sforzo minimo.
Manterremo il contenuto del progetto segreto per un altro giorno, dal momento che abbiamo abbastanza cose da fare oggi. Tuttavia diamogli un nome: Jobeet.
Ogni capitolo/giorno è pensato per durare circa un'ora e rappresenta l'occasione per imparare a utilizzare symfony realizzando un sito web reale dall'inizio alla fine. Ogni giorno verranno aggiunte nuove feature all'applicazione, e sfrutteremo queste novità per introdurvi alle nuove funzionalità di symfony e alle good practice dello sviluppo web con symfony.
Questo tutorial è differente
Ripensate agli albori del PHP4. Ah, la Belle Epoque! PHP era uno dei primi linguaggi dedicati al web e uno dei più semplici.
Ma con la veloce evoluzione delle tecnologie web gli sviluppatori devono tenersi al passo con le ultime best practice e con gli strumenti più aggiornati. La via migliore per imparare è sicuramente quella di leggere blog, tutorial e libri. Ne abbiamo letti molti, siano scritti per PHP, Python, Java, Ruby, o Perl e molti di essi perdono di vista l'obiettivo finale quando l'autore inizia a dare porzioni di codice come esempio.
Probabilmente siete abituati a leggere avvisi come questi:
"Per un'applicazione reale non dimenticare di aggiungere la validazione e una corretta gestione degli errori."
oppure
"La sicurezza è lasciata al lettore come esercizio."
o ancora
"Avrete sicuramente bisogno di scrivere dei test."
Cosa? Queste cose sono attività serie. Sono forse le parti più importanti di ogni altra parte di codice. E come lettori venite abbandonati. Senza tenere conto di queste cose gli esempi sono molto meno utili visto che non possono essere usati come punto di partenza. Questo è male! Perché? Perché la sicurezza, la validazione, la gestione degli errori e i test (solo per dirne alcuni) permettono di scrivere codice corretto.
In questo libro non si vedranno mai frasi come quelle viste in precedenza: scriveremo test, gestiremo errori, valideremo il codice e state pure certi che realizzeremo un'applicazione sicura. Questo è dovuto al fatto che symfony si occupa del codice ma anche di utilizzare le best practice e di mostrare come sviluppare in modo professionale applicazioni per il mondo enterprise. Saremo in grado di fornire questo lusso perché symfony mette a disposizione tutti gli strumenti necessari per affrontare questi aspetti in modo semplice e senza scrivere troppo codice.
Validazione, gestione degli errori, sicurezza e test sono argomenti di prima classe in symfony perciò non servirà molto tempo per spiegarli. Questa è solo una delle molteplici ragioni per usare un framework per realizzare progetti reali.
Tutto il codice che si leggerà in questo libro potrà essere usato per un progetto reale. Incoraggiamo a riutilizzare parti del codice o a "rubare" intere porzioni.
Cosa facciamo oggi?
Oggi non scriveremo codice PHP. Ma anche senza scrivere una sola riga di codice si inizieranno a capire i benefici derivanti dall'utilizzo di un framework come symfony già dall'avvio di un nuovo progetto.
L'obiettivo di questo capitolo è quello di impostare l'ambiente di sviluppo e visualizzare una pagina dell'applicazione in un browser web. Questo include l'installazione di symfony, la creazione dell'applicazione e la configurazione del server web.
Prerequisiti
Prima di installare symfony è necessario verificare che nel computer sia tutto correttamente installato e configurato. È meglio prendere ora il tempo necessario per seguire tutti i passi richiesti per la verifica della configurazione, perché può fare risparmiare tempo in seguito.
Software di terze parti
Prima di tutto, è necessario verificare che il computer disponga di un ambiente di lavoro per lo sviluppo web. Come minimo, è necessario un server web (Apache, per esempio), un database (MySQL, PostgreSQL, SQLite, o qualunque database compatibile con PDO) e PHP 5.2.4 o superiore.
Interfaccia a linea di comando
Il framework symfony contiene uno strumento a linea di comando che aiuta ad automatizzare gran parte del lavoro. Gli utenti dei sistemi operativi della famiglia Unix, si sentiranno a casa. Se si utilizza un sistema Windows, funzionerà lo stesso, si dovrà solo digitare alcuni comandi nel prompt di cmd
.
I comandi della shell Unix possono tornare utili in un sistema Windows. Per poter usare comandi come
tar
,gzip
ogrep
su Windows si può installare Cygwin. La documentazione ufficiale è un po' frammentata, quindi ecco una buona guida all'installazione. I più avventurosi potrebbero voler provare Windows Services for Unix di Microsoft.
~Configurazione di PHP~
Poiché le configurazioni di PHP possono variare da un sistema operativo a un'altro, è necessario controllare che la configurazione di PHP soddisfi i requisiti minimi di symfony.
Per prima cosa, assicurarsi di avere installato come minimo PHP 5.2.4. utilizzando la funzione di PHP phpinfo()
, oppure lanciando php -v
nella linea di comando. Siate consapevoli del fatto che su alcune configurazioni, è possibile avere due diverse versioni di PHP installati: uno per la riga di comando e un altro per il web.
Dopo, scaricare lo script di symfony per verificare la configurazione, al seguente indirizzo web:
http://sf-to.org/1.4/check.php
Salvare lo script da qualche parte sotto la cartella principale del server web.
Lanciare lo script per verificare la confgurazione dalla linea di comando:
$ php check_configuration.php
Se c'è un problema con la configurazione di PHP, l'output del comando darà suggerimenti su cosa correggere e come risolvere il problema.
Si dovrebbe anche eseguire la verifica da un browser e mettere a posto i problemi che si potrebbero verificare. Questo perché PHP può avere distinti file di cofigurazione php.ini
per questi due ambienti, con impostazioni diverse.
Successivamente, non dimenticarsi di rimuovere il file dalla cartella web.
~Installazione~ di symfony
Prima di tutto creare una cartella per contenere i file relativi al progetto Jobeet:
$ mkdir -p /home/sfprojects/jobeet
$ cd /home/sfprojects/jobeet
Su Windows:
c:\> mkdir c:\development\sfprojects\jobeet
c:\> cd c:\development\sfprojects\jobeet
agli utenti Windows raccomandiamo di eseguire symfony e di creare il nuovo progetto in un percorso che non contenga spazi. Evitate l'utilizzo della cartella
Documents and Settings
, stessa cosa per qualsiasi sotto-cartella diMy Documents
.
Se si cra la cartella per il progetto di symfony sotto la cartella principale del server web, non c'è bisogno di configurare il web server. Naturalmente, per l'ambiente di produzione, si consiglia vivamente di configurare il server web, come spiegato nella sezione di configurazione del server web.
Scegliere la versione di symfony
Ora bisogna installare symfony. Poiché il framework symfony ha diverse versioni stabili, bisogna scegliere quella che si vuole installare, leggendo la pagina di installazione sul sito web di symfony.
Questo libro assume che si voglia installare symfony 1.3 o symfony 1.4.
Scegliere dove installare symfony
È possibile installare symfony globalmente sulla propria macchina o incorporarlo in ogni progetto. Il secondo metodo è quello consigliato, in questo modo i progetti saranno totalmente indipendenti gli uni dagli altri. Aggiornare l'installazione locale di symfony non crea problemi imprevisti sui progetti. Ciò significa che si potranno avere progetti su diverse versioni di symfony, con la possibilità aggiornarli singolarmente, in base alla necessità.
Utilizzando una delle migliori prassi, molte persone installano i file del framework di symfony nella cartella lib/vendor
del progetto. Quindi iniziamo con il creare questa cartella:
$ mkdir -p lib/vendor
L'installazione di symfony
Installazione da un archivio
Il modo più semplice per installare symfony è quello di scaricare l'archivio per la versione scelta dal sito web di symfony. Andare nella pagina con le installazioni e prendere la versione scelta, ad esempio symfony 1.4.
Dentro la sezione "Source Download" si troverà l'archivio nei formati .tgz
e .zip
. Scaricate il pacchetto, salvandolo nella cartella lib/vendor/
appena creata, ed estrarne i file:
$ cd lib/vendor
$ tar zxpf symfony-1.4.0.tgz
$ mv symfony-1.4.0 symfony
$ rm symfony-1.4.0.tgz
Su Windows l'estrazione dal file zip può essere fatta con explorer. Dopo aver rinominato la cartella in symfony
, si dovrebbe avere una cartella di nome c:\development\sfprojects\jobeet\lib\vendor\symfony
.
Installazione da Subversion (raccomandata)
Se si usa Subversion, è meglio utilizzare la proprietà svn:externals
per incorporare symfony nella cartella lib/vendor/
del progetto:
$ svn pe svn:externals lib/vendor/
L'importazione del progetto in un nuovo repository Subversion è spiegata alla fine di questo capitolo.
Se tutto procede bene, questo comando lancierà l'editor preferito per dare la possibilità di configurare le fonti esterne di Subversion.
Su Windows, si possono usare programmi come TortoiseSVN per fare ogni cosa relativa all'svn, senza la necessità di usare la console.
I conservatori possono legare il progetto a una versione specifica (un tag Subversion):
symfony http://svn.symfony-project.com/tags/RELEASE_1_4_0
Ogni volta che esce una nuova versione (annunciata nel blog) di symfony, sarà necessario cambiare l'URL alla nuova versione.
I temerari possono utilizzare il ramo 1.4:
symfony http://svn.symfony-project.com/branches/1.4/
Utilizzando il ramo, il progetto beneficia automaticamente delle correzioni dei bug ogni volta che si esegue un aggiornamento con svn update
.
Verificare l'installazione
Ora che symfony è installato, verificare che ogni cosa funzioni correttamente, utilizzando la linea di comando di symfony per visualizzare la versione (attenzione all'uso della V
maiuscola):
$ cd ../..
$ php lib/vendor/symfony/data/bin/symfony -V
Su Windows:
c:\> cd ..\..
c:\> php lib\vendor\symfony\data\bin\symfony -V
Se si è curiosi di sapere cosa può fare questa linea di comando, digitare
symfony
per ottenere la lista di tutte le opzioni e dei task disponibili:$ php lib/vendor/symfony/data/bin/symfony
Su Windows:
c:> php lib\vendor\symfony\data\bin\symfony
La linea di comando di symfony è il miglior amico dello sviluppatore. Mette a disposizione molti strumenti che aumentano la produttività per le attività giornaliere come la pulizia della cache, la generazione del codice e molto altro.
Inizializzazione del progetto
In symfony, ~applicazioni~ che condividono lo stesso modello di dati sono raggruppate in progetti. Per il progetto Jobeet avremo due diverse applicazioni: il ~frontend~ e il ~backend~.
Creazione del progetto
Dalla cartella jobeet
, eseguire il task generate:project
per creare il progetto symfony:
$ php lib/vendor/symfony/data/bin/symfony generate:project jobeet $ php lib/vendor/symfony/data/bin/symfony generate:project jobeet --orm=Propel
Su Windows:
c:\> php lib\vendor\symfony\data\bin\symfony generate:project jobeet
Il task generate:project
genera la ~struttura~ di default delle cartelle e i file necessari per il progetto stesso:
Cartella | Descrizione |
---|---|
apps/ | Contiene le applicazioni del progetto |
cache/ | I file di cache del progetto |
config/ | I file di configurazione del progetto |
lib/ | Le librerie e le classi del progetto |
log/ | I file di log del framework |
plugins/ | I plugin installati |
test/ | Test unitari e funzionali |
web/ | La cartella principale del web (leggi sotto) |
Perché symfony genera così tanti file? Uno dei maggiori benefici di usare un framework full-stack è quello di standardizzare ciò che sviluppate. Grazie alla struttura di default di symfony dei file e delle cartelle, ogni sviluppatore con un minimo di conoscenza di symfony potrà occuparsi della manutenzione di un progetto symfony. In pochi minuti sarà in grado di tuffarsi nel codice risolvendo bug e aggiungendo nuove feature.
Il task generate:project
ha inoltre creato un collegamento symfony
nella cartella principale del progetto Jobeet per dover scrivere meno caratteri ogni volta che si utilizza un task.
Quindi, da ora in poi, invece che usare l'intero percorso per l'eseguibile di symfony useremo la scorciatoia symfony
.
Creazione dell'applicazione
Ora create l'applicazione frontend usando il task generate:app
:
$ php symfony generate:app frontend
Visto che il file symfony è eseguibile, gli utenti Unix possono sostituire tutte le occorrenze di '
php symfony
' con './symfony
' da qui in avanti.Su Windows si può copiare il file 'symfony.bat' nel progetto e utilizzare '
symfony
' invece che 'php symfony
':c:\> copy lib\vendor\symfony\data\bin\symfony.bat .
Basandosi sul nome dell'applicazione, il task generate:app
ha creato la struttura di default delle cartelle necessarie a un'applicazione nella cartella apps/frontend
:
Cartella | Descrizione |
---|---|
config/ | I file di configurazione dell'applicazione |
lib/ | Le librerie e le classi dell'applicazione |
modules/ | Il codice dell'applicazione (MVC) |
templates/ | I file globali dei template |
Tutti i comandi
symfony
devono essere eseguiti nella cartella principale a meno che non sia specificato diversamente.
Sicurezza
Per impostazione predefinita, il task
generate:app
, ha messo in sicurezza l'applicazione dalle due principali vulnerabilità riscontrate sul web. È esatto, symfony predispone in modo automatico le misure di ~sicurezza~ al posto nostro.Per prevenire attacchi ~XSS~, è stata abilitata l'escapizzazione dell'output; per prevenire attacchi ~CSRF~, sono stati generati dei token di sessione nascosti e casuali.
Naturalmente, è possibile personalizzare queste impostazioni grazie alle seguenti opzioni:
--escaping-strategy
: Abilita l'escape dell'output per prevenire gli attacchi ~XSS~--csrf-secret
: Abilita i token di sessione per i form per prevenire gli attacchi ~CSRF~Se non si sa nulla a proposito di XSS o CSRF, sarebbe opportuno informarsi su queste vulnerabilità di sicurezza.
Permessi per le cartelle
Prima di tentare di accedere al progetto appena creato, è necessario impostare i permessi di scrittura sulle cartelle della cache/
e dei log/
ai livelli appropriati, in modo che il server web possa scriverci:
$ chmod 777 cache/ log/
Suggerimenti per chi utilizza uno strumento di SCM
symfony scrive sempre e solo su due cartelle di un progetto,
cache/
elog/
. Il contenuto di queste cartelle dovrebbe essere ignorato dal programm SCM utilizzato (ad esempio se si utilizza Subversion, configurando la proprietàsvn:ignore
).
Setup del ~server web~: la via brutta
Nella sezione precedente è stata creata una cartella per contenere il progetto Jobeet. Se è stata creata da qualche parte dentro la ~cartella principale web~ del server, si è in grado di accedere al progetto da un browser web.
Chiaramente, visto che non è richiesta nessuna configurazione, il tutto è stato molto rapido da realizzare, se tuttavia si prova ad accedere al file config/databases.yml
nel vostro browser, si può capire quante pericolose conseguenze può implicare questo modo di agire, dettato dalla pigrizia. Se l'utente sa che il sito è stato sviluppato con symfony, avrà accesso a molti file sensibili.
Mai e poi mai utilizzare un setup di questo tipo su un server in produzione, leggere la prossima sezione per imparare a configurare correttamente il proprio server web.
Setup del server web: la via sicura
Una buona pratica web è quella di mettere nella cartella principale web solamente i file che devono essere utilizzati da un browser web come fogli di stile, JavaScript e immagini. Come da impostazione predefinita, suggeriamo di salvare questi file dentro la sotto-cartella web
del progetto symfony.
Dando uno sguardo a questa cartella, si troveranno alcune sotto-cartelle per i ~materiali~ web (css/
e images/
) e i due file dei front controller. Questi sono gli unici file PHP che necessitano di essere nella cartella principale web. Tutti gli altri file PHP possono essere nascosti al browser, questa è una buona idea in termini di ~sicurezza~.
Configurazione del server web
Ora è il momento di modificare la configurazione di ~Apache~ per rendere il nuovo progetto accessibile a tutti.
Trovare e aprire il file di configurazione httpd.conf
e aggiungere le seguenti configurazioni alla fine:
# Assicurarsi di avere questa linea una sola volta nel file
NameVirtualHost 127.0.0.1:8080
# Questa è la configurazione per Jobeet
Listen 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
DocumentRoot "/home/sfprojects/jobeet/web"
DirectoryIndex index.php
<Directory "/home/sfprojects/jobeet/web">
AllowOverride All
Allow from All
</Directory>
Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf
<Directory "/home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
L'~alias~
/sf
permette l'accesso alle immagini e ai javascript necessari per la corretta visualizzazione delle ~pagine di default di symfony~ e della web debug toolbar.Su ~Windows~ occorre sostituire la riga dell'
Alias
con qualcosa come:Alias /sf "c:\development\symfony\data\web\sf"
e
/home/sfprojects/jobeet/web
dovrà essere rimpiazzata con:c:\development\sfprojects\jobeet\web
Questa configurazione mette Apache in ascolto sulla porta 8080
della propria macchina, quindi il sito Jobeet sarà accessibile dal seguente URL:
http://~localhost~:8080/
Si può cambiare 8080
con qualsiasi numero, preferendo comunque numeri maggiori di 1024
, visto che non richiedono privilegi amministrativi.
Configurare un ~nome a dominio~ dedicato per Jobeet
Se si disponde di privilegi amministrativi sulla macchina su cui si lavora, è meglio impostare dei ~virtual host~, piuttosto che aggiungere una nuova porta ogni volta che si nizia un nuovo progetto. Invece che selezionare una porta e aggiungere una direttiva di tipo
Listen
, scegliere un nome a dominio e aggiungere una direttiva di tipoServerName
:# Questa è la configurazione per Jobeet <VirtualHost 127.0.0.1:80> ServerName jobeet.localhost </VirtualHost>
Il nome a dominio
jobeet.localhost
, usato nella configurazione di Apache, deve essere dichiarato localmente. Se si utilizza un sistema Linux, questo va fatto nel file/etc/hosts
. Se si usa Windows XP, questo file è posizionato nella cartellaC:\WINDOWS\system32\drivers\etc\
.Aggiungere la seguente riga:
127.0.0.1 jobeet.localhost
Provare la nuova configurazione
Riavviare Apache e verificare di avere accesso alla nuova applicazione, aprendo il browser e digitando http://localhost:8080/index.php/
o http://jobeet.localhost/index.php/
in base alla configurazione di Apache selezionata nella sezione precedente.
Se si ha il modulo di Apache
~mod_rewrite~
installato, si può rimuovere la parte /index.php/ da tutti gli URL. Questo è possibile grazie alle regole di riscrittura configurate nel fileweb/.~htaccess~
.
Si può anche provare ad accedere all'applicazione nell'ambiente di sviluppo. Digitare il seguente URL:
http://jobeet.localhost/frontend_dev.php/
La web debug toolbar dovrebbe apparire nell'angolo in alto a destra, con delle piccole icone a riprova del fatto che la configurazione dell'alias sf/
è corretta.
La configurazioe è leggermente differente se si vuole lanciare symfony su un server IIS in un ambiente Windows. Le modalità di configurazione si trovano sul relativo tutorial.
Gli ~ambienti~
Se si dà un'occhiata alla cartella web/
, si troveranno due file PHP: index.php
e frontend_dev.php
. Questi file sono chiamati front controller: tutte le richieste all'applicazione vengono fatte tramite loro. Ma perché abbiamo due front controller se abbiamo definito una sola applicazione?
Entrambi i file puntano alla stessa applicazione, ma per diversi ambienti. Mentre sviluppate un'applicazione, escluso quando si sviluppa direttamente sul server di produzione, occorrono diversi ambienti:
-
L'ambiente di sviluppo: È l'ambiente usato dai web developer quando lavorano sull'applicazione, per aggiungere nuove feature, risolvere bug, ...
-
L'ambiente di test: Quest'ambiente è utilizzato per testare in modo automatico l'applicazione.
-
L'ambiente di staging: Quest'ambiente è utilizzato dal cliente per testare l'applicazione e riportare bug o feature mancanti.
-
L'ambiente di produzione: Questo è l'ambiente con cui gli utenti finali interagiscono.
Cosa rende un ambiente unico? Nell'ambiente di sviluppo ad esempio, l'applicazione necessita di scrivere nei log tutti i dettagli di una richiesta per rendere più semplice il debug, ma il sistema di cache deve essere disabilitato, per fare in modo che tutte le modifiche apportate al codice siano subito disponibili. Quindi l'ambiente di sviluppo deve essere ottimizzato per lo sviluppatore. L'esempio migliore è quando viene sollevata un'eccezione. Per aiutare lo sviluppatore nel debug del problema, symfony mostra l'eccezione con tutte le informazioni disponibili sulla richiesta corrente all'interno del browser:
Ma nell'ambiente di produzione la cache deve essere abilitata e l'applicazione deve mostrare messaggi di errore personalizzati, piuttosto che semplici eccezioni. In questo modo l'ambiente di produzione deve essere ottimizzato per le prestazioni e per la user experience dell'utente finale.
Se si aprono i file dei front controller, si può notare che il contenuto è lo stesso, tranne per l'impostazione dell'ambiente:
// web/index.php <?php require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false); sfContext::createInstance($configuration)->dispatch();
La web debug toolbar è un ottimo esempio dell'utilizzo di un ambiente. La ~web debug toolbar~ è presente su tutte le pagine nell'ambiente di sviluppo e dà accesso a molte informazioni, cliccando sulle varie linguette: la configurazione attuale dell'applicazione, i log per la richiesta corrente, i comandi SQL eseguiti sul database, informazioni sulla memoria e sui tempi.
~Subversion~
È una buona abitudine usare un sistema di controllo delle versioni mentre si sviluppa un'applicazione web. Usare un sistema di controllo delle versioni permette di:
- lavorare in sicurezza
- tornare a una versione precedente se qualche modifica blocca qualcosa
- lavorare in più persone in modo efficiente sul progetto
- avere accesso a tutte le versioni successive dell'applicazione
In questa sezione descriveremo come usare Subversion con symfony. Se usate un altro strumento per il sistema di controllo delle versioni, dovrebbe essere abbastanza semplice adattare quanto descritto per Subversion.
Ipotizziamo che si disponga già di un accesso a un server Subversion e di un accesso HTTP a esso.
Se non si ha un server Subversion a disposizione, si può creare un repository in modo gratuito su Google Code o anche cercare "free subversion repository" su Google per avere molte più opzioni.
Innanzitutto, creare un nuovo repository per il progetto jobeet
:
$ svnadmin create /path/to/jobeet/repository
Sulla propria macchina, creare la struttura di base delle cartelle:
$ svn mkdir -m "creata struttura la base delle cartelle"
➥ http://svn.example.com/jobeet/trunk
➥ http://svn.example.com/jobeet/tags
➥ http://svn.example.com/jobeet/branches
Eseguire il checkout della cartella vuota trunk/
:
$ cd /home/sfprojects/jobeet
$ svn co http://svn.example.com/jobeet/trunk/ .
Poi rimuovere il contenuto delle cartelle cache/
e log/
, visto che non intendiamo inserirle nel repository.
$ rm -rf cache/* log/*
Ora assicurarsi di impostare i giusti permessi di scrittura sulle cartelle cache
e log
, per fare in modo che il server web possa scriverci dentro:
$ chmod 777 cache/ log/
Ora, importare tutti i file e le cartelle:
$ svn add *
Siccome non sarà mai necessario di eseguire il commit per file delle cartelle cache/
e /log
, si possono specificare delle opzioni di "ignore":
$ svn propedit svn:ignore cache
L'editor di testo di default configurato per SVN dovrebbe aprirsi. Subversion deve ignorare tutti i contenuti delle seguenti cartelle:
*
Salvare e uscire. Abbiamo finito.
Ripetere la procedura per la cartella log/
:
$ svn propedit svn:ignore log
E inserire:
*
Infine, eseguire la prima importazione:
$ svn import -m "prima importazione" .
➥ http://svn.example.com/jobeet/trunk
Gli utenti ~Windows~ possono usare il client TortoiseSVN per gestire i propri repository subversion.
A domani
Bene, il tempo per oggi è finito! Anche se non abbiamo ancora iniziato a parlare di symfony abbiamo impostato un solido ambiente di sviluppo, abbiamo parlato di alcune best practice riguardanti lo sviluppo web e siamo pronti per iniziare a scrivere codice.
Domani sveleremo ciò che l'applicazione farà e parleremo dei requisiti che dovremo implementare per Jobeet.
ORM
インデックス
Document Index
関連ページリスト
Related Pages
- Giorno 1: Impostare il progetto
- Giorno 2: Il progetto
- Giorno 3: Il ~Modello dei dati~
- Giorno 4: Il controllore e la vista
- Giorno 5: Il routing
- Giorno 6: Di più sul Modello
- Giorno 7: Giocare con la pagina delle categorie
- Giorno 8: I test unitari
- Giorno 9: I test funzionali
- Giorno 10: Form
- Giorno 11: Testare i Form
- Giorno 12: Admin Generator
- Giorno 13: L'utente
- Giorno 14: Feed
- Giorno 15: Web Service
- Giorno 16: Inviare ~email|Email~
- Giorno 17: Ricerca
- Giorno 18: ~AJAX~
- Giorno 19: Internazionalizzazione e Localizzazione
- Giorno 20: I plugin
- Giorno 21: La Cache
- Giorno 22: Il rilascio
- Giorno 23: Un altro sguardo a symfony
- Appendice B - Licenza
- Riconoscimenti
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成