<slide title="PHP 5.4" section="php54perf">

<break lines="1" />
<blurb fontsize="6em">Performance Improvements</blurb>
<list>
<item>FastCGI request handling</item>
<item>better memory handling</item>
<item>startup/shutdown</item>
<item>repeated run-time function binding</item>
<item>string constants</item>
<item>access to global constants</item>
<item>access to static properties</item>
<item>empty hashes</item>
<item>@ operator</item>
<item>unserialize()</item>
</list>

<break lines="1" section="php54page2"/>
<blurb fontsize="4em">✔ Built-in Web Server</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Traits aka Horizontal Code Reuse</blurb>
<blurb fontsize="3em" margintop="-0.5em">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(Compiler-assisted Copy-and-Paste)</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Short Array Syntax</blurb>
<example result='0' title=""><![CDATA[<?php
$a = [1, 2, 3];
$b = ['foo' => 'orange', 'bar' => 'apple'];
]]></example>

<break lines="1" section="php54page3"/>
<blurb fontsize="4em">✔ Function Array Dereferencing</blurb>
<example result='0' title=""><![CDATA[<?php
function fruits() {
  return array('apple', 'banana', 'orange');
}
echo fruits()[0]; // Outputs: apple
?>]]></example>

<break lines="1" />
<blurb fontsize="4em">✔ $this from current scope supported in Closures</blurb>
<example result='0' title=""><![CDATA[<?php
class Foo {
  private $prop = "bar";
  public function getPrinter() {
    return function() { echo ucfirst($this->prop); };
  }
}

$a = new Foo;
$func = $a->getPrinter();
$func(); // Outputs: Bar
?>]]></example>

<break lines="1" section="php54page4"/>
<blurb fontsize="4em">✔ &amp;lt;?= is now always available</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ New Session Object</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Callable Typehint</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Better support for asian chars in htmlspecialchars/htmlentities</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Multibyte support is now configurable at runtime</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ JSON Improvements</blurb>
<list><item>JsonSerializable</item></list>
<example result='0' title=""><![CDATA[<?php
class Foo implements JsonSerializable {
    private $data = 'Bar';
    public function jsonSerialize() {
        return array('data'=>$this->data);
    }
}
echo json_encode(new Foo); // Outputs: {"data":"Bar"}]]></example>

<break lines="1" section="php54page5"/>
<blurb fontsize="4em">✔ mysqlnd used by default everywhere</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ iterator support added to mysqli (mysqli_result implements Traversable)</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Binary notation</blurb>
<example result='0' title=""><![CDATA[<?php
$mask = 0b010101;
]]></example>

<break lines="1" />
<blurb fontsize="4em">✔ AES Support added to OpenSSL</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Tokyo Cabinet and DB5 support added to dba</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Added stack frame count arg to debug_backtrace()</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ $_SERVER['REQUEST_TIME_FLOAT'] added</blurb>

<break lines="1" />
<blurb fontsize="4em">✔ Apache 2.4 support on Windows</blurb>

</slide>
