際際滷

際際滷Share a Scribd company logo
Introduzione agli eZ
Components
Gaetano Giunta
PHP Day 2008
Rimini, 24/5/2008
www.ez.no
Agenda
Introduzione
Architettura / design degli eZ Components
Funzionalit delle ultime release
Esempi di utilizzo
Domande / altro
eZ Systems
Societ creatrice di eZ Publish e degli eZ Components
Fondata in Norvegia nel 1999
85 Dipendenti - 23 nazionalit
HQ a Skien / Norvegia, cinque uffici regionali
Nordics : Oslo  Copenhagen -Skien
Central and eastern Europe : Dortmund
Western Europe : Paris  Lyon  Bruxelles
Nothern America : Vancouver - Chicago
A breve ... London & Tokyo
100% Open Source
100% PHP
eZ Components  di cosa si tratta?
束Una piattaforma enterprise ready di componenti php general
purpose損
cio竪
Non 竪 un framework
... ma un insieme di componenti debolmente accoppiati. Si
possono usare insieme o singolarmente
Non 竪 dedicata esclusivamente allo sviluppo web
... ma soprattutto allo sviluppo web
Disponibile con licenza New BSD e con supporto eZ Systems
Obiettivi della libreria
Costruire una piattaforma solida che semplifichi lo sviluppo
di applicazioni PHP 5 permettendo allo sviluppatore di non
reinventare la ruota ogni volta
API semplice e consistente, design OO 束pulito損
Non forzare una struttura obbligata: non 竪 un framework
Mantenere a lungo la compatibilit binaria e delle API
Mantenere la stabilit e limitare le regressioni
100% Open Source, con chiara attribuzione dei diritti di PI
Sviluppata, manutenuta e supportata da eZ Systems
Metodologia di sviluppo
Pieno utilizzo delle librerie e funzionalit disponibili da
PHP 5.1 (versione minima supportata: 5.1.6, a volte +)
Discussione e documentazione di tutte le API prima della
loro implementazione
Utilizzo pervasivo di unit testing  scrittura dei test
PRIMA del codice
Documentazione sia inline (phpdoc  gogo) che offline
(tutorials, reference, guida di installazione). La
documentazione si scrive durante lo sviluppo, non dopo
Architettura: naming delle classi
Utilizzazione di un prefisso, a causa della mancanza di
namespacing (in attesa di PHP 5.3): ezcXXX
Leggibili: meglio nomi lunghi ma parlanti che criptici
Talvolta 束aggiustati損 per una migliore leggibilit
eg: ezcMailSmtpTransport vs. EzcMailSMTPTransport
ezcTestSuite vs. PHPUnit2_Framework_TestSuite
...e molte altre regole su
http://ezcomponents.org/contributing/coding_standards.html
Architettura: dipendenze
Meno ce n'竪, meglio 竪...
... evitando per嘆 la duplicazione del codice
solo dove necessario
Componenti separati
che le implementano
Schema generale
Le classi sono
raggruppate in
Packages
Roadmap
Release 2008.1 (expected: Giugno 2008)
Nuovi componenti:
Document  conversione tra differenti formati di dati
ExtendedReflection
Feed
Search  front-end per Solr e altri motori di ricerca
Ultime novit
2008.1 alpha1
Nuovo: Cache gerarchica multilivello
PersistentObject supporto per pi湛 datatypes
Nuovo componente: Search
Migliorie a: Archive, Authentication, Configuration,
ConsoleTools, Database, DatabaseSchema, EventLog,
Graph, Mail, Tree e Workflow
2008.1 alpha2
Nuovo componente: Document
Migliorie a: Base, EventLog, Search e Userinput
2008.1 beta: a partire dal 27 maggio
Requisiti di sistema
PHP versione 5.1.6 (per Tree e Webdav PHP 5.2.1)
Alcune estensioni php sono necessarie per alcuni componenti,
oppure ne aumentano le capacit
es: Archive necessita di zlib (presente nell'installazione
standard di PHP) e bz2, opzionalmente pu嘆 utilizzare
束posix損 per la gestione dei permessi dei file
Elenco esaustivo: su
http://ezcomponents.org/overview/requirements.html
(c'竪 anche un quick reference su come compilare le estensioni
mancanti)
Ambiente di sviluppo: suggerimenti
Sempre sviluppare con display_errors = On, log_errors = On,
error_reporting = E_ALL
Dove si trova il log degli errori di PHP? E del webserver?
XDebug - l'amico del PHP OOP (e non solo):
stack traces completi
Debugging step-by-step (con IDE adeguati)
Analisi della code coverage (con tool di visualizzazione)
Profiling (con kcachegrind/wincachegrind)
Ambiente di sviluppo: altri suggerimenti
 Imprescindibile per lo sviluppo web: Firebug
 altre estensioni Firefox utili: 束Web developer損,
束YSlow損, 束LiveHTTPHeaders損, 束IETab損,
束Console2損, 束 Selenium IDE 損
 Per gli sviluppatori windows: UNXUTILS
 In produzione:
 Sempre utilizzare una opcode cache (APC, Eaccelerator,
Xcache, Zend)
 Utili nel troubleshooting: Phpinfo, server-status e
server-info
Installazione 1: via PEAR
1. Avere una installazione di PHP 5.1 e PEAR funzionante
2. Aggiungere il canale components.ez.no all'installer PEAR
pear channel-discover components.ez.no
3. Scaricare effettivamente i componenti
pear install -a ezc/eZComponents
Per aggiornare una installazione esistente:
pear upgrade ezc/eZComponents
pear help <nomecomando> 竪 vostro amico!
Installazione 2: via SVN
Per chi 竪 interessato allo sviluppo della libreria o ha bisogno
di una patch appena rilasciata
1. Avere una installazione di PHP 5.1 e un client SVN
2. Creare una directory dove installare i componenti e ivi
svn co http://svn.ez.no/svn/ezcomponents/trunk
3. Scaricare lo script che imposta l'ambiente di sviluppo
svn co http://svn.ez.no/svn/ezcomponents/scripts
./scripts/setup-env.sh (o scriptssetup-env.bat)
E' ovviamente possibile fare un checkout limitato di solo
qualche componente  attenzione alle dipendenze!
Installazione 3: old school (a.k.a. "a mano")
1. Scaricare e decomprimere la tarball
wget
http://ezcomponents.org/files/downloads/ezcomponents-2007
tar -xjf ezcomponents-2007.2.1.tar.bz2
3. Impostare correttamente l'Include Path (manca il 2!)
Configurazione
Include path: settato in automatico da PEAR, altrimenti
va messa la directory radice in cui si 竪 scaricato il software
Autoload: in automatico tutte le classi degli
eZComponents vengono caricate da ezcBase
require_once "Base/base.php";
function __autoload( $className )
{
ezcBase::autoload( $className );
}
NB: per installazioni via SVN o tarball
require_once "Base/src/base.php";
E ora passiamo al codice...
Domande?
Grazie dell'attenzione!
Gaetano Giunta
Senior consultant
eZ Systems Western Europe
26 rue de la r辿publique
69002 Lyon
tel : +33 (0)4.78.37.01.56
email : gg@ez.no
http://ezcomponents.org
http://ez.no/community/forums/ez_components
http://lists.ez.no/mailman/listinfo/components

More Related Content

php day 2008 - Introduzione agli ez components

  • 1. Introduzione agli eZ Components Gaetano Giunta PHP Day 2008 Rimini, 24/5/2008 www.ez.no
  • 2. Agenda Introduzione Architettura / design degli eZ Components Funzionalit delle ultime release Esempi di utilizzo Domande / altro
  • 3. eZ Systems Societ creatrice di eZ Publish e degli eZ Components Fondata in Norvegia nel 1999 85 Dipendenti - 23 nazionalit HQ a Skien / Norvegia, cinque uffici regionali Nordics : Oslo Copenhagen -Skien Central and eastern Europe : Dortmund Western Europe : Paris Lyon Bruxelles Nothern America : Vancouver - Chicago A breve ... London & Tokyo 100% Open Source 100% PHP
  • 4. eZ Components di cosa si tratta? 束Una piattaforma enterprise ready di componenti php general purpose損 cio竪 Non 竪 un framework ... ma un insieme di componenti debolmente accoppiati. Si possono usare insieme o singolarmente Non 竪 dedicata esclusivamente allo sviluppo web ... ma soprattutto allo sviluppo web Disponibile con licenza New BSD e con supporto eZ Systems
  • 5. Obiettivi della libreria Costruire una piattaforma solida che semplifichi lo sviluppo di applicazioni PHP 5 permettendo allo sviluppatore di non reinventare la ruota ogni volta API semplice e consistente, design OO 束pulito損 Non forzare una struttura obbligata: non 竪 un framework Mantenere a lungo la compatibilit binaria e delle API Mantenere la stabilit e limitare le regressioni 100% Open Source, con chiara attribuzione dei diritti di PI Sviluppata, manutenuta e supportata da eZ Systems
  • 6. Metodologia di sviluppo Pieno utilizzo delle librerie e funzionalit disponibili da PHP 5.1 (versione minima supportata: 5.1.6, a volte +) Discussione e documentazione di tutte le API prima della loro implementazione Utilizzo pervasivo di unit testing scrittura dei test PRIMA del codice Documentazione sia inline (phpdoc gogo) che offline (tutorials, reference, guida di installazione). La documentazione si scrive durante lo sviluppo, non dopo
  • 7. Architettura: naming delle classi Utilizzazione di un prefisso, a causa della mancanza di namespacing (in attesa di PHP 5.3): ezcXXX Leggibili: meglio nomi lunghi ma parlanti che criptici Talvolta 束aggiustati損 per una migliore leggibilit eg: ezcMailSmtpTransport vs. EzcMailSMTPTransport ezcTestSuite vs. PHPUnit2_Framework_TestSuite ...e molte altre regole su http://ezcomponents.org/contributing/coding_standards.html
  • 8. Architettura: dipendenze Meno ce n'竪, meglio 竪... ... evitando per嘆 la duplicazione del codice solo dove necessario Componenti separati che le implementano
  • 9. Schema generale Le classi sono raggruppate in Packages
  • 10. Roadmap Release 2008.1 (expected: Giugno 2008) Nuovi componenti: Document conversione tra differenti formati di dati ExtendedReflection Feed Search front-end per Solr e altri motori di ricerca
  • 11. Ultime novit 2008.1 alpha1 Nuovo: Cache gerarchica multilivello PersistentObject supporto per pi湛 datatypes Nuovo componente: Search Migliorie a: Archive, Authentication, Configuration, ConsoleTools, Database, DatabaseSchema, EventLog, Graph, Mail, Tree e Workflow 2008.1 alpha2 Nuovo componente: Document Migliorie a: Base, EventLog, Search e Userinput 2008.1 beta: a partire dal 27 maggio
  • 12. Requisiti di sistema PHP versione 5.1.6 (per Tree e Webdav PHP 5.2.1) Alcune estensioni php sono necessarie per alcuni componenti, oppure ne aumentano le capacit es: Archive necessita di zlib (presente nell'installazione standard di PHP) e bz2, opzionalmente pu嘆 utilizzare 束posix損 per la gestione dei permessi dei file Elenco esaustivo: su http://ezcomponents.org/overview/requirements.html (c'竪 anche un quick reference su come compilare le estensioni mancanti)
  • 13. Ambiente di sviluppo: suggerimenti Sempre sviluppare con display_errors = On, log_errors = On, error_reporting = E_ALL Dove si trova il log degli errori di PHP? E del webserver? XDebug - l'amico del PHP OOP (e non solo): stack traces completi Debugging step-by-step (con IDE adeguati) Analisi della code coverage (con tool di visualizzazione) Profiling (con kcachegrind/wincachegrind)
  • 14. Ambiente di sviluppo: altri suggerimenti Imprescindibile per lo sviluppo web: Firebug altre estensioni Firefox utili: 束Web developer損, 束YSlow損, 束LiveHTTPHeaders損, 束IETab損, 束Console2損, 束 Selenium IDE 損 Per gli sviluppatori windows: UNXUTILS In produzione: Sempre utilizzare una opcode cache (APC, Eaccelerator, Xcache, Zend) Utili nel troubleshooting: Phpinfo, server-status e server-info
  • 15. Installazione 1: via PEAR 1. Avere una installazione di PHP 5.1 e PEAR funzionante 2. Aggiungere il canale components.ez.no all'installer PEAR pear channel-discover components.ez.no 3. Scaricare effettivamente i componenti pear install -a ezc/eZComponents Per aggiornare una installazione esistente: pear upgrade ezc/eZComponents pear help <nomecomando> 竪 vostro amico!
  • 16. Installazione 2: via SVN Per chi 竪 interessato allo sviluppo della libreria o ha bisogno di una patch appena rilasciata 1. Avere una installazione di PHP 5.1 e un client SVN 2. Creare una directory dove installare i componenti e ivi svn co http://svn.ez.no/svn/ezcomponents/trunk 3. Scaricare lo script che imposta l'ambiente di sviluppo svn co http://svn.ez.no/svn/ezcomponents/scripts ./scripts/setup-env.sh (o scriptssetup-env.bat) E' ovviamente possibile fare un checkout limitato di solo qualche componente attenzione alle dipendenze!
  • 17. Installazione 3: old school (a.k.a. "a mano") 1. Scaricare e decomprimere la tarball wget http://ezcomponents.org/files/downloads/ezcomponents-2007 tar -xjf ezcomponents-2007.2.1.tar.bz2 3. Impostare correttamente l'Include Path (manca il 2!)
  • 18. Configurazione Include path: settato in automatico da PEAR, altrimenti va messa la directory radice in cui si 竪 scaricato il software Autoload: in automatico tutte le classi degli eZComponents vengono caricate da ezcBase require_once "Base/base.php"; function __autoload( $className ) { ezcBase::autoload( $className ); } NB: per installazioni via SVN o tarball require_once "Base/src/base.php";
  • 19. E ora passiamo al codice...
  • 20. Domande? Grazie dell'attenzione! Gaetano Giunta Senior consultant eZ Systems Western Europe 26 rue de la r辿publique 69002 Lyon tel : +33 (0)4.78.37.01.56 email : gg@ez.no http://ezcomponents.org http://ez.no/community/forums/ez_components http://lists.ez.no/mailman/listinfo/components