Approvata la proposta di miglioramenti a Zend_Uri

weppos January 11th, 2008

Zend_Uri è uno dei primi componenti discussi su questo blog con tanto di script.
Come già documentato, è un componente fondamentale alla base di molte librerie dello Zend Framework: dai web service a Zend_Http_Client.

Oggi il core team del framework ha ufficialmente approvato la proposta conosciuta con il nome di Zend_Uri improvements, presentata da Shahar Evron, già autore della prima versione della classe.
Tra le novità più interessanti spiccano:

  1. il supporto a nuovi schemi come mailto: e file:
    <?php
    // Da una stringa
    $uri = new Zend_Uri_Http('http://user:p4s5w0r3@www.example.com:8000/foo/bar?param=value#fragment');
    // Da una stringa con il metodo factory
    $uri = Zend_Uri::factory('http://user:p4s5w0r3@www.example.com:8000/foo/bar?param=value#fragment');
    // Schema personalizzato
    $uri = Zend_Uri::factory('myScheme://somehost:1000/path');
    // mailto URI
    $uri = new Zend_Uri_Mailto();
    // mailto URI da array
    $uri = new Zend_Uri_Mailto(array(
        'scheme' => 'mailto',
        'path'   => 'shahar.e@zend.com',
        'query'  => 'subject=something'));
    
  2. l’introduzione di un nuovo concetto di estendibilità che consente di registrare illimitati schemi personalizzati per far fronte a specifiche esigenze (and esempio feed:// per i feed XML)
  3. l’introduzione di nuovi metodi per manipolare URI, come ad esempio la possibilità di eseguire un merge tra due URI o parti di URI per ricavarne un terzo
    <?php
    // Merge di un URL HTTP parziale con un URI
    $uri1 = Zend_Uri::factory('http://www.example.com/foo/bar/file');
    $uri2 = Zend_Uri::factory('../baz/something');
    $uri3 = Zend_Uri::merge($uri1, $uri2);  // $uri3 is a new object
    echo $uri3->getUri(); // 'http://www.example.com/foo/baz/something'
    
  4. Il supporto a URI relativi e l’introduzione del base URI, ovvero il percorso base per la definizione di URI relativi (molto diffuso in feed XML o specifiche tecniche)

E’ facilmente comprensibile come queste novità causeranno alcuni problemi di retrocompatibilità che, ad ogni modo, è previsto vengano documentati ampiamente nel manuale ufficiale.

Trackback URI | Comments RSS

Leave a Reply