gaetano giunta: introduzione agli ez components

20
Introduzione agli eZ Components Gaetano Giunta PHP Day 2008 Rimini, 24/5/2008 www.ez.no

Upload: francesco-fullone

Post on 17-May-2015

4.093 views

Category:

Technology


1 download

DESCRIPTION

eZ Components è una libreria di componenti PHP generici ed \"enterprise ready\" che possono essere utilizzati tanto singolarmente quanto in gruppo per lo sviluppo di applicazioni PHP. Con gli eZ Components gli sviluppatori non perdono tempo a reinventare ogni volta la ruota, ma si possono concentrare sulla risoluzione dei problemi specifici di ogni cliente. Gli eZ Components sono sviluppati secondo una filosofia di interoperabilità e pulizia di design che permette ai programmatori un ottimo grado di flessibilità e libertà nello sviluppo, garantendo allo stesso tempo un insieme di API stabili, consistenti e ben documentate. Sono accuratamente sviluppati con numerosi unit test per garantirne la massima qualità, e distribuiti gratuitamente con licenza New BSD. In questa sessione saranno illustrati la struttura generale, i contenuti ed il funzionamento della libreria eZ Components. La prima parte del workshop si occupa di problemi architetturali e scelte affrontate dagli sviluppatori nel design della libreria. Vengono illustrati il layout dei file, il meccanismo di packaging, la risoluzione delle dipendenze, il versioning, le linee guida generali di sviluppo e la licenza. Nella seconda parte verranno introdotti con esempi pratici di utilizzo quei componenti che hanno visto una recente introduzione o un significativo miglioramento nelle più recenti release della libreria, come p.e. i componenti Search, Cache gerarchica, Feed o Workflow.

TRANSCRIPT

Page 1: Gaetano Giunta: introduzione agli eZ components

Introduzione agli eZ

Components

Gaetano Giunta

PHP Day 2008

Rimini, 24/5/2008

www.ez.no

Page 2: Gaetano Giunta: introduzione agli eZ components

Agenda

Introduzione

Architettura / design degli eZ Components

Funzionalità delle ultime release

Esempi di utilizzo

Domande / altro

Page 3: Gaetano Giunta: introduzione agli eZ components

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 regionaliNordics : Oslo – Copenhagen -SkienCentral and eastern Europe : DortmundWestern Europe : Paris – Lyon – BruxellesNothern America : Vancouver - ChicagoA breve ... London & Tokyo

100% Open Source

100% PHP

Page 4: Gaetano Giunta: introduzione agli eZ components

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

Page 5: Gaetano Giunta: introduzione agli eZ components

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

Page 6: Gaetano Giunta: introduzione agli eZ components

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

Page 7: Gaetano Giunta: introduzione agli eZ components

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. EzcMailSMTPTransportezcTestSuite vs. PHPUnit2_Framework_TestSuite

...e molte altre regole su

http://ezcomponents.org/contributing/coding_standards.html

Page 8: Gaetano Giunta: introduzione agli eZ components

Architettura: dipendenze

Meno ce n'è, meglio è...

... evitando però la duplicazione del codice

solo dove necessario

Componenti separati

che le implementano

Page 9: Gaetano Giunta: introduzione agli eZ components

Schema generale

Le classi sono

raggruppate in

Packages

Page 10: Gaetano Giunta: introduzione agli eZ components

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

Page 11: Gaetano Giunta: introduzione agli eZ components

Ultime novità

2008.1 alpha1Nuovo: Cache gerarchica multilivelloPersistentObject supporto per più datatypesNuovo componente: SearchMigliorie a: Archive, Authentication, Configuration, ConsoleTools, Database, DatabaseSchema, EventLog, Graph, Mail, Tree e Workflow

2008.1 alpha2Nuovo componente: DocumentMigliorie a: Base, EventLog, Search e Userinput

2008.1 beta: a partire dal 27 maggio

Page 12: Gaetano Giunta: introduzione agli eZ components

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)

Page 13: Gaetano Giunta: introduzione agli eZ components

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 completiDebugging step-by-step (con IDE adeguati)Analisi della code coverage (con tool di visualizzazione)Profiling (con kcachegrind/wincachegrind)

Page 14: Gaetano Giunta: introduzione agli eZ components

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

Page 15: Gaetano Giunta: introduzione agli eZ components

Installazione 1: via PEAR

1. Avere una installazione di PHP 5.1 e PEAR funzionante

2. Aggiungere il canale components.ez.no all'installer PEARpear channel-discover components.ez.no

3. Scaricare effettivamente i componentipear install -a ezc/eZComponents

Per aggiornare una installazione esistente:pear upgrade ezc/eZComponents

pear help <nomecomando> è vostro amico!

Page 16: Gaetano Giunta: introduzione agli eZ components

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 ivisvn co http://svn.ez.no/svn/ezcomponents/trunk

3. Scaricare lo script che imposta l'ambiente di svilupposvn co http://svn.ez.no/svn/ezcomponents/scripts./scripts/setup-env.sh (o scripts\setup-env.bat)

E' ovviamente possibile fare un checkout limitato di solo

qualche componente – attenzione alle dipendenze!

Page 17: Gaetano Giunta: introduzione agli eZ components

Installazione 3: old school (a.k.a. "a mano")

1. Scaricare e decomprimere la tarball

wget http://ezcomponents.org/files/downloads/ezcomponents-2007.2.1.tar.bz2

tar -xjf ezcomponents-2007.2.1.tar.bz2

3. Impostare correttamente l'Include Path (manca il 2!)

Page 18: Gaetano Giunta: introduzione agli eZ components

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 ezcBaserequire_once "Base/base.php";function __autoload( $className ){ ezcBase::autoload( $className );}

NB: per installazioni via SVN o tarball

require_once "Base/src/base.php";

Page 19: Gaetano Giunta: introduzione agli eZ components

E ora passiamo al codice...

Page 20: Gaetano Giunta: introduzione agli eZ components

Domande?

Grazie dell'attenzione!

Gaetano GiuntaSenior consultanteZ Systems Western Europe26 rue de la république69002 Lyontel : +33 (0)4.78.37.01.56email : [email protected]

http://ezcomponents.org

http://ez.no/community/forums/ez_components

http://lists.ez.no/mailman/listinfo/components