Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

PEAR: una montagna di codice PHP

PEAR è un sistema di distribuzione di pacchetti contenenti codice PHP
PEAR è un sistema di distribuzione di pacchetti contenenti codice PHP
Link copiato negli appunti

PEAR è l'acronimo di "PHP Extension and Application Repository", si tratta di un progetto ambizioso il cui scopo è quello di ricoprire per la community PHP il ruolo che CPAN detiene nel mondo degli sviluppatori PERL, cioè fornire un "magazzino" di codice open-source (suddiviso nei cosiddetti "packages") e una serie di linee guida standard per la programmazione.

PEAR si articola in diversi sotto-progetti: al momento la parte più matura e corposa è costituita dalla libreria di classi PHP (la "Structured Library of PHP Code"), ma una sezione molto promettente è quella del PECL ("PHP Extension Code Library") che si propone di sviluppare, delle vere e proprie estensioni in C sul tipo di quelle già distribuite con PHP.
C'è una buona probabilità che sempre più packages PHP, una volta considerati maturi (stable), vengano trasportati nel PECL, ottenendo un prevedibile incremento di velocità e prestazioni .

Nei paragrafi che seguiranno ci occuperemo dell'installazione e di come iniziare ad utilizzare le varie classi: due argomenti sui quali la documentazione ufficiale, di cui a fine articolo riportiamoil link, purtroppo è ancora carente o addirittura fuorviante.

La struttura dei "packages" PHP

La "Library of PHP Code" viene detta "Structured" in quanto, trattandosi di una libreria di classi, sfrutta abbondantemente le possibilità di riutilizzo del codice concesse dall'approccio Object Oriented attraverso l'ereditarietà o l'associazione: ne consegue che quasi mai un package può essere installato è utilizzato isolatamente ignorando le dipendenze dagli altri.

Tutte le classi derivano direttamente o indirettamente dalla classe base PEAR, contenuta nel file PEAR.php, mentre eventuali altre dipendenze vengono elencate nell'apposito box "Dependencies". PEAR MDB, ad esempio, richiede sia la presenza di XML_PARSER che di una versione della classe base PEAR >= 1.0.b1.

L'interdipendenza dei packages rende scomodi l'installazione e l'aggiornamento manuali (cioè prelevando i pacchetti e inserendoli nel giusto percorso) ed è consigliabile ricorrere ad uno dei metodi automatizzati disponibili.

Installazione nei sistemi Unix

La cosa non presenta particolari problemi, è sufficiente specificare "--with-pear[=DIR]" (default nelle versioni recenti di Php) durante il "./configure" ed avere disponibili uno dei due interpreti da linea di comando (default) per poter eseguire gli aggiornamenti.

La directory PEAR si troverà nel percorso specificato (o, se non se non è stato indicato, nella directory base di php) e conterrà già alcuni packages fondamentali.

Aggiornamento dei pacchetti nei sistemi Unix

Per una volta le cose sono molto più semplici di quanto lo siano per gli utenti Windows: se abbiamo installato una versione di Php precedente alla 4.3.0pre1 possiamo scaricare il "package manager" digitando da shell:

$ lynx -source http://go-pear.org | php

e seguire le istruzioni.

Nelle successive release di Php le cose si sono fatte ancora più semplici, infatti il package manager risulta preinstallato e possiamo utilizzare il seguente comando per ottenere i pacchetti che ci interessano.

$ pear install <nome_pacchetto_senza_n_versione>

Per un elenco di tutte le opzioni possibili (e sono davvero molte) è sufficiente digitare soltanto

$ pear

Scopriremo ad esempio che:

$ pear list

fornisce una lista di tutti i packages attualmente installati.

Qualora incontriate problemi insormontabili potete comunque fare riferimento ai paragrafi successivi, nei quali viene descritto un metodo universale, l'unico che (nel momento in cui scrivo) non dia problemi in Windows.

Installazione e aggiornamento nei sistemi Windows

Nella distribuzione PHP per Windows Soltanto a partire dalla release 4.3.2 troviamo incluse la directory PEAR e i packages fondamentali. Il consiglio è di dimenticarsi di tutto ciò: meglio ignorare quello che concerne PEAR e procedete all'installazione da zero, altrimenti c'è soltanto il rischio di fare confusione.

Purchè il webserver che utilizzate sia stato configurato correttamente per eseguire gli script PHP la procedura che esamineremo nelle prossime pagine, indipendente dal sistema operativo, consentirà di installare in pochi passaggi sia i packages fondamentali che il front-end WEB per gli aggiornamenti.

Dovremo inoltre restare connessi a Internet durante l'intera fase di installazione.

Passo 1: procuriamoci il "PEAR installer"

Apriamo un qualsiasi browser e digitiamo l'url http://pear.php.net/go-pear,
otterremo il sorgente di uno script che dovremo salvare in una directory nella DocumentRoot del Webserver: possiamo mantenere il nome originale e chiamare il file go-pear.php.

Quindi se ad esempio la DocumentRoot si trova in c:WWW creiamo una directory c:WWWpear_install, inseriamo lo script nel path c:WWWpear_installgo-pear.php.

Passo 2: azioniamo l'installer

Ora dobbiamo far eseguire lo script creato al punto 1. Seguendo le precedenti impostazioni, è necessario richiedre attraverso il browser l'url http://localhost/pear_install/go-pear.php: ci apparirà la seguente schermata:

Schermata iniziale PEAR: logo verde e messaggi di benvenuto

che ci darà il benvenuto e ci consentirà di proseguire nella procedura di installazione.

Clicchiamo su NEXT e proseguiamo

Passo 3: definizione dei parametri per l'installazione

Ci viene chiesto di definire i percorsi per l'installazione, possiamo accettare quelli proposti, e allora la directory PEAR con i packages base verrà inserita nel path corrente (quello dello script go-pear.php), oppure possiamo decidere di definire una diversa collocazione. Come per tutti i file di libreria da includere sarebbe preferibile stabilire un percorso esterno alla DocumentRoot, cioè non raggiungibile via WEB ma che consenta l'accesso in lettura a PHP.

Le voci più importanti sono "Installation prefix" (il path fino alla directory base per l'installazione) e "Filename of WebFrontend" (il path e il nome del package manager che stiamo per installare e che utilizzeremo per gli aggiornamenti).

Generalmente preferisco installare PEAR all'interno di una directory creata appositamente per le librerie da includere, quindi ad esempio potremmo modificare "Installation prefix" in c:libs, ovviamente c:libs deve consentire la scrittura all'installer (e quindi a PHP).

La schermata che ci consentirà di definire questi parametri è simile a quella riportata di seguito:

Schermata di configurazione di Pear

Visto che l'installazione avviene da zero assicuriamoci anche di aver spuntato la checkbox relativa al download e all'installazione dei packages fondamentali.

Passo 4: download

L'installer si collegherà a http://pear.php.net e comincerà il download dei packages; a seconda della velocità della nostra connessione potremmo dover attendere parecchi minuti.

Se tutto andrà per il verso giusto visualizzeremo una lista dei packages base installati, e in c:libs ci sarà la directory PEAR che li contiene.

Passo 5: il front-end via WEB

Nel percorso specificato precedentemente con il parametro "Filename of WebFrontend" troviamo il file "index.php", questo è proprio il front-end WEB che consente di aggiornare i packages, installarne di nuovi e modificare diversi parametri.

In base al nostro esempio il file si trova sempre in c:libs accanto alla directory PEAR appena creata, per utilizzarlo dovremo spostarlo di lì e inserirlo in un path all'interno della DocumentRoot: c:WWWpear_install (dove già abbiamo go-pear.php) andrà benissimo.

Passo 6: alcune correzioni

Lo script presenta un piccolo bug di cui probabilmente si accorgeranno soltanto gli utenti con Modem 56k: è posibile rimediare semplicemente aprendo il file con un editor qualsiasi e aggiungendo subito sotto al tag di apertura "<?php" la riga seguente

set_time_limit(180) ;

In questo modo evitiamo un probabile timeout dopo i fatidici 30 secondi.

D'ora in poi sarà sufficiente richiedere attraverso il browser la pagina http://localhost/pear_install/index.php per accedere ad un pannello di amministrazione estremamente intuitivo:

Pannello di con opzioni di Amministrazione

Se non dovessimo essere collegati a internet riceveremo un errore e non ci sarà possibile effettuare gli aggiornamenti.

È importante precisare che in un server di produzione la directory in cui abbiamo inserito index.php deve essere protetta adeguatamente e resa accessibile soltanto a chi viene autorizzato ad utilizzare il pannello: a questo scopo sarà necessario operare sulla configurazione del Webserver.

Passo 7: modifichiamo php.ini

Per utilizzare un package dobbiamo includerlo nei nostri script, il file di configurazione di PHP (php.ini) contiene un parametro che ci consente di evitare di specificare ogni volta il percorso completo fino alla directory base di PEAR.
Il parametro in questione è "include_path", se gli attribuiamo un percorso quando l'engine PHP dovrà effettuare l'inclusione un file come prima cosa cercherà all'interno di quel path.
È possibile specificare più percorsi divisi da un separatore (":" nei sistemi Unix, ";" in Windows).

In base agli esempi precedenti dovremo impostare include_path a ".;c:libsPEAR" dove il primo "." è un percorso standard che rappresenta la directory in cui viene eseguito lo script.

D'ora in poi se vorremo utilizzare il package XML_RPC potremo includerlo così:

include('XML/RPC.php') ;

altrimenti sarebbe stato necessario inserire il percorso completo

include('c:/libs/PEAR/XML/RPC.php') ;

Conclusioni

Potremmo dire scherzosamente che PEAR è un frutto ancora acerbo: è uscito dallo stadio beta da meno di un anno, anche se negli ultimi mesi i diversi progetti che lo compongono hanno avuto uno sviluppo esponenziale.

La documentazione purtroppo è ancora piuttosto scarsa e copre solo una minima parte della library, in molti casi è indispensabile studiare i sorgenti per capire come utilizzarle uno script al meglio, ma nonostante questa incompletezza ci sono tutte le premesse per affermare che sentiremo parlare sempre più spesso di PEAR.

Non mancano infatti classi di provata utilità che sono stabili da tempo: solo per fare alcuni esempi esistono ben 2 layer di astrazione da database (PEAR DB e PEAR MDB), 5 template engine (tra i quali risalta Flexy) e anche l'imponente phpDocumentor, che consente di ottenere la documentazione delle classi PHP ricavandola direttamente dal sorgente (in stile JavaDoc).
Meglio cominciare sin da subito a tenere d'occhio questo repository e magari, perchè no, provare a contribuire.

Ti consigliamo anche