Inserisci Infobox

PHP 5: Overview delle novità introdotte

PHP 5: Overview delle novità introdotte

Novità introdotte da PHP 5
Autore: mario-online - Ultimo Aggiornamento: 2004-10-28 23:44:26 - Data di creazione: 2004-10-28 23:44:26
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Nonostante PHP 4 sia "quasi" perfetto per lo sviluppo di semplici applicazioni web: trattamento di form, connessioni a database etc..., ci sono alcune limitazioni che si incontrano soprattutto nell'utilizzo di PHP in applicazioni complesse, in particolare la versione di OOP (object-oriented programming) è carente di molte funzionalità proprie dei linguaggi di questo tipo (uno per tutti: Java), l'estensione per MySQL non supporta il nuovo protocollo client di MySQL 4.1 e il supporto a XML è quantomeno non adeguato.

PHP 5 è andato a migliorare la versione precedente proprio in questi punti "deboli" dato che sono state completamente riscritti i componenti relativi a:
- Programmazione ad Oggetti
- MySQL: grazie alla nuova MySQLi (MySQL Improved extensions) viene offerta la possibilità di utilizzare una connessione SSL verso il server, di gestire query già preparate con parametri collegati ottimizzandone quindi l'esecuzione. Infine viene offerta una nuova interfaccia OO a MySQL.
- XML: il fine di queste nuove implementazioni è quello di garantire una interoperabilità tra le varie estensioni piuttosto che utilizzare diversi agent per ognuna di esse. Il supporto a DOM (Document Object Model) consente di considerare questa specifica come un API (application Programming Interface) indipendente dal linguaggio di programmazione. Viene fornita inoltre una nuova estensione XSLT (Extensibile Stylesheet Language Transformation) che permette di convertire dati XML e oggetti DOM in documenti tramite l'utilizzo di stylesheets. Oltre a ciò è stata introdotta la possibilità di estrarre in modo molto semplice le informazioni da documenti XML di cui si conoscano le specifiche tramite la nuova estensione SimpleXML

Le altre novità maggiori sono sicuramente:
- la gestione di un database totalmente embedded: SQLite. Nonostante il nome faccia pensare ad un database con funzionalità ridotte, SQLite, oltre a permettere di gestire dati senza ulteriori installazioni, offre supporto a transazioni, subquery, trigger e altre funzionalità avanzate.
- gli iteratori. Raggruppati nella SPL (Standard PHP Library) permettono di ciclare tramite istruzioni foreach su diversi tipi di dato come elenchi di file, risultati di query e anche documenti XML
- la gestione degli errori tramite eccezioni (exception handling). Questo permette, come già avviene in altri linguaggi come Java o C++, di separare completamente la gestione degli errori dalla logica del programma
- la gestione di stream, filtri e wrapper come interfaccia di lettura e scrittura su file.
- il supporto a SOAP sia per la creazione di web service che come client per web services già esistenti
- e infine Tidy: un'estensione che permette di validare il codice HTML o XHTML generato come output.

Utilizzo PEAR
Autore: g4b0 - Ultimo Aggiornamento: 2006-10-09 11:53:31 - Data di creazione: 2006-10-09 11:22:07
Tipo Infobox: ARTICLES - Skill:

Ho notato che PEAR ("PHP Extension and Application Repository") non è di così immediato utilizzo, così ecco un' articolo su come utilizzarlo..

innanzitutto se avete un php > 4.3.0 non avete nulla da installare. Vi basta cercare sul sito di riferimento (http://pear.php.net) il package di cui avete bisogno, per poi installarlo con il comando install. Per esempio per installare il package HTTP_Request useremo la seguente sintassi:
    
    root@slack#pear install HTTP_Request
    
        Did not download dependencies: pear/Net_URL, pear/Net_Socket, use --alldeps or --onlyreqdeps to download automatically
        pear/HTTP_Request requires package "pear/Net_URL" (version >= 1.0.12)
        pear/HTTP_Request requires package "pear/Net_Socket" (version >= 1.0.2)
        No valid packages found
        install failed
    

    
    In questo caso mancano delle dipendenze, quindi si rivela necessario l'utilizzo del flag --alldeps (come suggerito da PEAR stesso)
    
    root@slack# pear install --alldeps HTTP_Request
    
        downloading HTTP_Request-1.3.0.tgz ...
        Starting to download HTTP_Request-1.3.0.tgz (13,808 bytes)
        .....done: 13,808 bytes
        downloading Net_URL-1.0.14.tgz ...
        Starting to download Net_URL-1.0.14.tgz (5,173 bytes)
        ...done: 5,173 bytes
        downloading Net_Socket-1.0.6.tgz ...
        Starting to download Net_Socket-1.0.6.tgz (4,623 bytes)
        ...done: 4,623 bytes
        install ok: channel://pear.php.net/Net_Socket-1.0.6
        install ok: channel://pear.php.net/Net_URL-1.0.14
        install ok: channel://pear.php.net/HTTP_Request-1.3.0
    

    
    
    Per aggiornarlo, quando viene rilasciata una nuova versione, scriveremo:
    
    root@slack#pear upgrade HTTP_Request
    
    Per aggiornare tutti i package installati userermo:
    
    root@slack#pear upgrade all
    
    Per conoscere l'elenco dei package installati:
    
    root@slack# pear list
    
        Installed packages, channel pear.php.net:
        =========================================
        Package          Version State
        Archive_Tar      1.3.1   stable
        Console_Getopt   1.2     stable
        DB               1.7.6   stable
        HTML_AJAX        0.4.1   alpha
        HTML_Template_IT 1.1.4   stable
        HTTP             1.4.0   stable
        HTTP_Request     1.3.0   stable
        Mail             1.1.10  stable
        Net_SMTP         1.2.8   stable
        Net_Socket       1.0.6   stable
        Net_URL          1.0.14  stable
        PEAR             1.4.10  stable
        XML_Parser       1.2.7   stable
        XML_RPC          1.5.0   stable
    

    
    Vediamo infile l'utilizzo da Php delle classi messe a disposizione da PEAR, continuo con l'esempio di HTTP_Request, la quale permetti di simulare richieste HTTP (POST e GET) via codice e restituisce il relativo output:
    
    
    <?php
        require_once "HTTP/Request.php";
        
        $req =& new HTTP_Request("http://www.google.it/");
        if (!PEAR::isError($req->sendRequest())) {
            echo $req->getResponseBody();
        } else {
            $response1 = "no response";
        }
        
        echo $response1;
    ?>
    

    
    L'esempio è molto semplice, rimando alla documentazione del package per ulteriori complicazioni.
    
    Concludendo PEAR è una collezione di package molto utile, che evita di dover reinventare la ruota ogni volta. Prima di scrivere qualsiasi tipo di codice il mio consiglio è di spendere 10min. a vedere se qualcuno (probabilmente più preparato di noi) non lo abbia già fatto.

Privacy Policy