php 5.3, a walkthrough
TRANSCRIPT
PHP 5.3A Walkthrough
@davidcoallier
Dé Luain 20 Meán Fómhair 2010
Who are you?Experiences, usage, etc.
Dé Luain 20 Meán Fómhair 2010
Who am I?Work, experiences, usage, etc.
Dé Luain 20 Meán Fómhair 2010
The Talk!Recap of why you are here...
Dé Luain 20 Meán Fómhair 2010
A small PHP 6Oh no, you didn’t!
Dé Luain 20 Meán Fómhair 2010
In a nutshellmysqlnd, phar, syntax, sqlite3, spl-sauce, speed, etc.
Dé Luain 20 Meán Fómhair 2010
ext/intlInternationalization Extension
Dé Luain 20 Meán Fómhair 2010
Collatorstring comparison, sorting, locale
Dé Luain 20 Meán Fómhair 2010
Numbers...1,000,000; 1.000.000; 1 000 000
Dé Luain 20 Meán Fómhair 2010
ICU☃☕♨♿⚛
Dé Luain 20 Meán Fómhair 2010
More Importantly
Dé Luain 20 Meán Fómhair 2010
L S BLate Static Binding, wtf is that?
Dé Luain 20 Meán Fómhair 2010
NAMESPACES\\\\
Dé Luain 20 Meán Fómhair 2010
NAMESPACES!!!!
Dé Luain 20 Meán Fómhair 2010
Closures & λs
Dé Luain 20 Meán Fómhair 2010
Late-Static Bindingself:: vs static::, what’s that? LSB?
Dé Luain 20 Meán Fómhair 2010
class Base { public static function who() { echo __CLASS__; } public static function foo() { self::who(); }}
class Child extends Base { public static function who() { echo __CLASS__; }}
Child::foo(); // Echoes Base
Dé Luain 20 Meán Fómhair 2010
class Base { public static function who() { echo __CLASS__; } public static function foo() { static::who(); }}
class Child extends Base { public static function who() { echo __CLASS__; }}
Child::foo(); // Echoes Child
Dé Luain 20 Meán Fómhair 2010
$this is not static::Don’t get tricked, no inheritance
Dé Luain 20 Meán Fómhair 2010
Object LifecycleCreate, Immute, Memoize
Dé Luain 20 Meán Fómhair 2010
Referencial TransparencyIt’s not maths, it’s software.
Dé Luain 20 Meán Fómhair 2010
ZzzZz.....
Dé Luain 20 Meán Fómhair 2010
Dynamic StaticsOh that sounds nasty...
Dé Luain 20 Meán Fómhair 2010
$class = 'ClassName';$method = 'methodName';
$class::$method(...);
Dé Luain 20 Meán Fómhair 2010
Remember __call?
Dé Luain 20 Meán Fómhair 2010
__callStatic()
Dé Luain 20 Meán Fómhair 2010
Enough Statics..Moving on.
Dé Luain 20 Meán Fómhair 2010
NamespacesSo we have namespaces, now what?
Dé Luain 20 Meán Fómhair 2010
\Get over it.\We know. \
Dé Luain 20 Meán Fómhair 2010
OrganizeStructural decisions, maintainability
Dé Luain 20 Meán Fómhair 2010
namespace pear\package;class Example { // ...}
Dé Luain 20 Meán Fómhair 2010
use pear\package;$class = new Example();// or$class = new pear\package\Example();
Dé Luain 20 Meán Fómhair 2010
MeaningAnd community significance
Dé Luain 20 Meán Fómhair 2010
The culprit\strlen
Dé Luain 20 Meán Fómhair 2010
Coding Standardshttp://groups.google.com/group/php-standards/web/psr-0-final-proposal
Dé Luain 20 Meán Fómhair 2010
PharThe jar-like PHP Archives
Dé Luain 20 Meán Fómhair 2010
include 'phar://package.phar/index.php';
Dé Luain 20 Meán Fómhair 2010
$phar = new Phar('drupal7.phar');$phar->buildFromDirectory(__DIR__ . '/drupal7');$phar->setStub("<?phpPhar::interceptFileFuncs();Phar::webPhar();__HALT_COMPILER(); ?>"
Dé Luain 20 Meán Fómhair 2010
RewriteRule ^(.*)$ /drupal7.phar/$1 [QSA,L]
Dé Luain 20 Meán Fómhair 2010
Running, web-ing Phar magic-happy-times.
Dé Luain 20 Meán Fómhair 2010
λ (Lambda)Assigned to a variable
Dé Luain 20 Meán Fómhair 2010
$name = function() { return 'david'; };
Dé Luain 20 Meán Fómhair 2010
Closurefunctions with bound variables
Dé Luain 20 Meán Fómhair 2010
$names = array( 'Nate Abele', 'David Coallier', 'Cap\'n Crunch' ); $split = array_map( function($name) { list($first, $last) = explode(' ', $name); return compact('first', 'last'); }, $names ); // Result: array( array('first' => 'Nate', 'last' => 'Abele'), array('first' => 'David', 'last' => 'Coallier'), array('first' => 'Cap\'n', 'last' => 'Crunch') )
Stolen From NATE!
Dé Luain 20 Meán Fómhair 2010
$names = array('david', 'nate');$friends = array('helgi', 'joel');
$split = function($name) use ($friends) { //...};
Dé Luain 20 Meán Fómhair 2010
Functors :O
Dé Luain 20 Meán Fómhair 2010
class Name { public function __invoke() { return 'david'; }}
echo $name();
Dé Luain 20 Meán Fómhair 2010
Other things?SPL, changes, NOWDOCS, etc
Dé Luain 20 Meán Fómhair 2010
Fast TernariesNo need to check anymore... Beware
Dé Luain 20 Meán Fómhair 2010
$name = isset($_GET['name']) ? $_GET['name'] : 'No Name';
Dé Luain 20 Meán Fómhair 2010
$name = $_GET['name'] ?: 'No Name';
Dé Luain 20 Meán Fómhair 2010
NOWDOCSNOWDOCS cooler than HEREDOCS
Dé Luain 20 Meán Fómhair 2010
$name = 'david';$example =<<<RTFMHello $name,See you soon.RTFM;// Hello David
Dé Luain 20 Meán Fómhair 2010
$name = 'david';$example =<<<'RTFM'Hello $name,See you soon.RTFM;// Hello $name
Dé Luain 20 Meán Fómhair 2010
PerformanceBetter faster strong. Better stack
Dé Luain 20 Meán Fómhair 2010
Garbage Collectiongc_enable(), gc_disable(), etc.
Dé Luain 20 Meán Fómhair 2010
__DIR__dirname(__FILE__)
Dé Luain 20 Meán Fómhair 2010
__NAMESPACE__
Dé Luain 20 Meán Fómhair 2010
namespace pear\package\Example2 { const TEST = 'In Namespaces...'; function foo() { echo __NAMESPACE__; }}
echo \pear\package\Example2::TEST; // In Namespaces...\pear\package\Example2\foo(); // Example2
Dé Luain 20 Meán Fómhair 2010
E_DEPRECATED
Dé Luain 20 Meán Fómhair 2010
MySQLndNative MySQL Driver, faster, stats, self-contained
Dé Luain 20 Meán Fómhair 2010
DateTimeCrazy amazing dates handling
Dé Luain 20 Meán Fómhair 2010
$datetime1 = new DateTime('2009-10-11');$datetime2 = new DateTime('2009-10-13');$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%d days');
// +2 days
Dé Luain 20 Meán Fómhair 2010
SPLIterators, Iterators, Iterators.
Dé Luain 20 Meán Fómhair 2010
SPLDatastructures, Exceptions, Misc...
Dé Luain 20 Meán Fómhair 2010
My Favourite
Dé Luain 20 Meán Fómhair 2010
PHP FPMAlternate FastCGI Implementation 5.3.3
Dé Luain 20 Meán Fómhair 2010
IncentiveWhy do I have to use PHP 5.3?
Dé Luain 20 Meán Fómhair 2010
LithiumIt’s so rad!
Dé Luain 20 Meán Fómhair 2010
Zend Framework 2
Dé Luain 20 Meán Fómhair 2010
Symfony 2
Dé Luain 20 Meán Fómhair 2010
Doctrine 2
Dé Luain 20 Meán Fómhair 2010
Q&A
Dé Luain 20 Meán Fómhair 2010
Thank you@davidcoallier
Dé Luain 20 Meán Fómhair 2010