What’s next?
Taking PHP to the next level
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 2
Slide 2 text
Landscape
An overview of the PHP world
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 3
Slide 3 text
From the museum
... up to here today
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 4
Slide 4 text
~285,000
@davidcoallier — Berlin — SymfonyLive 2012
This is not a typo.
Thursday 22 November 12
Slide 5
Slide 5 text
~700 000
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 6
Slide 6 text
~75 000 000
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 7
Slide 7 text
~130 000
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 8
Slide 8 text
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 9
Slide 9 text
Yearly
Salary for
@davidcoallier — Berlin — SymfonyLive 2012
~60 000
Thursday 22 November 12
Slide 10
Slide 10 text
Making
People
@davidcoallier — Berlin — SymfonyLive 2012
Happy
Thursday 22 November 12
Slide 11
Slide 11 text
@davidcoallier — Berlin — SymfonyLive 2012
Der
Neandertaler
Extinction?
Thursday 22 November 12
Slide 12
Slide 12 text
@davidcoallier — Berlin — SymfonyLive 2012
Teaching
Billions
Education
Thursday 22 November 12
Slide 13
Slide 13 text
http://stats.wikimedia.org/
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 14
Slide 14 text
Namespaces\\
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 15
Slide 15 text
Namespaces!!
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 16
Slide 16 text
Closures & λ's
(lambdas)
Just like javascript...
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 17
Slide 17 text
$lambda = function() { ... }
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 18
Slide 18 text
$foo = ‘bar’;
$cls = function() use ($foo) {
return $foo;
};
echo $cls();
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 19
Slide 19 text
$f = function() { ... }
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 20
Slide 20 text
LSB
GC
Functors
Phar
$Dynamic::$Statics
SPL
Short Ternaries (?:)
__DIR__
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 21
Slide 21 text
LSB
GC
Functors
Phar
$Dynamic::$Statics
SPL
Short Ternaries (?:)
__DIR__
MySQLnd
DateTime
FPM
NOWDOCS
ICU
Collator
ext/intl
sqlite3
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 22
Slide 22 text
Get it?
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 23
Slide 23 text
5.4
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 24
Slide 24 text
array('foo' => 'bar')
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 25
Slide 25 text
['foo' => 'bar']
Short Syntax for arrays!
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 26
Slide 26 text
$obj->method($var)[2];
Function Array Dereferencing
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 27
Slide 27 text
Traits
Effective code re-use
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 28
Slide 28 text
@davidcoallier — Berlin — SymfonyLive 2012
1 year;
Thursday 22 November 12
Slide 29
Slide 29 text
SessionHandler
class VendorSession extends SessionHandler {}
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 30
Slide 30 text
A lot more.
PHP 5.4 isn’t only traits and arrays
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 31
Slide 31 text
Indirect Method Calls
$func = array(‘Foo’, ‘bar’);
$func();
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 32
Slide 32 text
Member Access
Upon Instantiation
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 33
Slide 33 text
$obj = (new Foo)->bar();
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 34
Slide 34 text
Support this!
Added $this closure support.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 35
Slide 35 text
PHP 5.5
Wait what?
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 36
Slide 36 text
Password Hashing API
Simplified Password API
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 37
Slide 37 text
Arbitrary Empty Args
empty(func()) • !func()
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 38
Slide 38 text
Foreach list Support
foreach ($vars as list($one, $two)) {...}
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 39
Slide 39 text
Getters and Setters
public $conf {
get { return $this->conf; }
set { $this->conf = ‘SymfonyLive2013’; }
}
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 40
Slide 40 text
echo ‘This is: ‘ . $obj->conf;
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 41
Slide 41 text
Generators
yield $explanation;
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 42
Slide 42 text
Finally...
finally.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 43
Slide 43 text
@davidcoallier — Berlin — SymfonyLive 2012
1 getMessage();
9 }
finally {
10 echo 'Look at me doing stuff.';
11 }
12 }
Thursday 22 November 12
Slide 44
Slide 44 text
Smaller things
Not shiny but ...
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 45
Slide 45 text
PCRE-/e
Hash
Curl?
MySQLi
assert(...)
ICU
set_error_handler(null);
boolval()
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 46
Slide 46 text
The future is bright
Not only features
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 47
Slide 47 text
Release Process
Making it easier to contribute
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 48
Slide 48 text
GIT!!!
http://git.php.net/
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 49
Slide 49 text
Built-in Webserver?
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 50
Slide 50 text
What does it all
mean?
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 51
Slide 51 text
Stronger Engineering
PHP isn’t only for hacking spider scripts
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 52
Slide 52 text
Better Tools
PHP a mature language
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 53
Slide 53 text
PHPUnit
Advanced Unit-Testing
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 54
Slide 54 text
XDebug
10 years! Congrats!
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 55
Slide 55 text
Getting work done
Frameworks old and new
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 56
Slide 56 text
Symfony
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 57
Slide 57 text
Thursday 22 November 12
Slide 58
Slide 58 text
A bunch of DICs
Don’t call me. I’ll call you.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 59
Slide 59 text
Zend Framework
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 60
Slide 60 text
Thursday 22 November 12
Slide 61
Slide 61 text
Lithium
(li3)
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 62
Slide 62 text
Even Agavi...
Take a look seriously.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 63
Slide 63 text
Silex
The largest micro-framework.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 64
Slide 64 text
Thursday 22 November 12
Slide 65
Slide 65 text
Composer
A New Package Manager
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 66
Slide 66 text
Thursday 22 November 12
Slide 67
Slide 67 text
External Projects
Really worth mentioning.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 68
Slide 68 text
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 69
Slide 69 text
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 70
Slide 70 text
Node.js
Don’t worry it doesn’t hurt.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 71
Slide 71 text
Nodephp.org
Taking the JS out of Node.js
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 72
Slide 72 text
On the other hand.
What is changing?
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 73
Slide 73 text
LAMP?
Yesterday’s problems
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 74
Slide 74 text
Rasmus once said
When the world becomes standard,
I will start caring about standards.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 75
Slide 75 text
The FIG
The PHP Framework Interoperability Group
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 76
Slide 76 text
Where does
that leave us?
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 77
Slide 77 text
Evolution
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 78
Slide 78 text
Platforms
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 79
Slide 79 text
Cloud...
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 80
Slide 80 text
Deploying
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 81
Slide 81 text
Quality Control
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 82
Slide 82 text
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 83
Slide 83 text
Focus
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 84
Slide 84 text
Adapted (ing)
to evolving needs.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 85
Slide 85 text
Modern
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 86
Slide 86 text
Share Nothing
Selfish systems
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 87
Slide 87 text
Shiny Objects
We all want some!
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 88
Slide 88 text
“Desire and hope will push us toward the future”
- Michel De Montaigne
Thursday 22 November 12
Slide 89
Slide 89 text
The David Theory
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 90
Slide 90 text
“Anything that can be used,
should be tried”
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 91
Slide 91 text
That’s PaaS
Make me succeed, but allow me to fail fast.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 92
Slide 92 text
Redis
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 93
Slide 93 text
MongoDB
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 94
Slide 94 text
CouchDB
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 95
Slide 95 text
Riak
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 96
Slide 96 text
CloudFlare
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 97
Slide 97 text
Ruby? :-O
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 98
Slide 98 text
Python? :o
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 99
Slide 99 text
Let us reflect.
About Technology and Communities
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 100
Slide 100 text
God Complex
David’s Stockholm Syndrome
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 101
Slide 101 text
“All War is Deception”
—Sun Tzu
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 102
Slide 102 text
Users are worth
more than technology
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 103
Slide 103 text
Next time
Think before bitching.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 104
Slide 104 text
A tip
Please consider the following.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 105
Slide 105 text
Other Techs
There is a world out there.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 106
Slide 106 text
Polyglotism
It is not an illness.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 107
Slide 107 text
Different Worlds
But so similar.
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 108
Slide 108 text
Community
Contributing to something
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12
Slide 109
Slide 109 text
Links
http://bitly.com/bundles/davidcoallier/3
@davidcoallier — Berlin — SymfonyLive 2012
Thursday 22 November 12