<slide title="PHP 7" section="php7">

<break lines="1" />
<blurb fontsize="4em">✔ phpng engine improvements</blurb>
<list>
<bullet fontsize="3em" marginleft="2em" type="none">10-25% performance gain on most realworld applications</bullet>
<bullet fontsize="3em" marginleft="2em" type="none">lower memory usage</bullet>
<bullet fontsize="3em" marginleft="2em" type="none">Cleans up some things for a future JIT</bullet>
</list>

<break lines="1" section="php7ast"/>
<blurb fontsize="4em">✔ Abstract Syntax Tree</blurb>

<blurb fontsize="4em">✔ 64-bit integer support on Windows</blurb>

<blurb fontsize="4em">✔ Catchable &quot;call to member function of non-object&quot;</blurb>

<blurb fontsize="4em">✔ Various cleanups (remove old ASP/script tags and more)</blurb>

<break lines="1" section="php7coalesce"/>
<blurb fontsize="4em">✔ Null Coalesce Operator</blurb>
<example fontsize="2em" marginleft="7em" result='0' title=""><![CDATA[<?php
$a = NULL;
$b = 1;
$c = 2;

echo $a ?? $b; // 1
echo $c ?? $b; // 2
echo $a ?? $b ?? $c; // 1
echo $a ?? $x ?? $c; // 2
]]></example>

<break lines="1" section="php7UVS"/>

<blurb fontsize="4em">✔ Uniform variable syntax</blurb>

<example fontsize="2em" marginleft="7em" result='0' title=""><![CDATA[<?php
// support missing combinations of operations
$foo()['bar']()
[$obj1, $obj2][0]->prop
getStr(){0}
 
// support nested ::
$foo['bar']::$baz
$foo::$bar::$baz
$foo->bar()::baz()
 
// support nested ()
foo()()
$foo->bar()()
Foo::bar()()
$foo()()
 
// support operations on arbitrary (...) expressions
(...)['foo']
(...)->foo
(...)->foo()
(...)::$foo
(...)::foo()
(...)()
 
// two more practical examples for the last point
(function() { ... })()
($obj->closure)()
 
// support all operations on dereferencable scalars
// (not very useful)
"string"->toLower()
[$obj, 'method']()
'Foo'::$bar]]></example>

<blurb fontsize="4em"> </blurb>

<blurb fontsize="3em">Still early. More things will likely be added</blurb>

<blurb fontsize="3em">First RC scheduled for June 2015</blurb>
</slide>
