php 5.3, a walkthrough

Post on 13-Apr-2017

2.819 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

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

top related