NYCPHP Meetup

[nycphp-talk] FW: [PHP] OO purism sucks - sell me on PHP5?

Hans Zaunere lists at zaunere.com
Sat Jun 3 10:58:34 EDT 2006



A nice outline from Rasmus on PHP 5.

---
Hans Zaunere / President / New York PHP
   www.nyphp.org  /  www.nyphp.com


Rasmus Lerdorf wrote on Friday, June 02, 2006 12:01 PM:
> tg-php_ at gryffyndevelopment.com wrote:
> 
> > "If it ain't broke, don't fix it" works for a while, but if there
> > are easier and/or better ways to do things in PHP5, I want in!  So
> > someone sell me on this from the point of view of someone who's
> > upgraded and has learned the joys of PHP5.  So far what I've found
> > online has been little more than a list of new features without an
> > idea of how much of a headache they're going to save me in the
> > future.      
> 
> To me the main user-visible benefits of going to PHP 5 are (ignoring
> the OO changes for now):
> 
> 1. Simplexml
> 
> eg. One-line RSS parser (of Flickr's upload queue feed)
> 
>    $url = 'http://www.flickr.com/services/feeds/photos_public.gne';
>    foreach(simplexml_load_file($url)->entry as $it) echo $it->content;
> 
> 
> 2. Much improved DOM support
> 
> eg. various things you can do to a DOM
> 
>    // First, load your XML document into a DOM
>    $dom = domdocument::load('test.xml');
> 
>    // Apply a stylesheet to the dom
>    $proc = new xsltProcessor;
>    $proc->importStyleSheet($domxsl);
>    echo $proc->transformToXML($dom);
> 
>    // xpath query on the dom
>    $ctx = new domXPath($dom);
>    $result = $ctx->query('/top/child[@attr > 3]/foo/text()');
>    foreach($result as $node) {
>      echo $node->nodeValue;
>    }
> 
>    // pull it into simplexml and access it
>    $s = simplexml_import_dom($dom);
>    echo $s->child[0]->foo;
> 
> 
> 3. xmlreader/xmlwriter
> 
> eg. SAX document validation using xmlreader
> 
>    $reader = new XMLReader();
>    $reader->open('test.xml');
>    $reader->setParserProperty(XMLReader::VALIDATE, true);
>    while($reader->read());
>    echo $reader->isValid();
> 
> 
> 4. PDO
> 
> eg. Prepare execute against MySQL with named parameters
> 
>    $pdo = new PDO('mysql:dbname=testdb');
> 
>    $sql = 'SELECT name, colour, calories
>            FROM fruit
>            WHERE calories < :calories AND colour = :colour';
>    $prep = $pdo->prepare($sql);
>    $prep->execute(array(':calories' => 150, ':colour' => 'red'));
>    $red = $prep->fetchAll();
> 
> 
> 5. SOAP
> 
> eg. Exposing your PHP code as a SOAP web service
> 
>    function Add($x,$y) {
>      return $x+$y;
>    }
>    $server = new SoapServer(null,array('uri'=>"http://test-uri/"));
>    $server->addFunction("Add");
>    $server->handle();
> 
> 
> 6. SPL
> 
> eg. Iterating over entries in a directory
> 
>    $dir = new DirectoryIterator('.');
>    foreach($dir as $ent) echo $ent;
> 
> 
> 7. Filter
> 
> eg. Define a default filter and use form input safely without
>      cluttering up your code with htmlspecialchars() calls everywhere
>      and provide easily auditable access to the unfiltered data
> 
>    php.ini: filter.default = special_chars
> 
>    echo $_POST['data'];
>    $raw = input_get(INPUT_POST,'data', FILTER_UNSAFE_RAW);
> 
> 
> 8. Native Date/Time mechanism
> 
> Date/time functions now behave exactly the same way on every platform
> regardless of the differences in locales if you choose to use the
> native mechanism.
> 
> Beyond that the compiler produces smaller opcode arrays and the
> executor is faster.  Not a directly visible thing, and this is still
> improving, but definitely a plus.
> 
> Note that for all of this I am referring to PHP 5.1.x, not 5.0.x.
> 
> -Rasmus
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php




More information about the talk mailing list