Slide 1

Slide 1 text

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