Download - Gaetano Giunta: introduzione agli eZ components

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