Download presentation
Presentation is loading. Please wait.
1
Copyright © 2007, Zend Technologies Inc. What’s coming in PHP 5.3 By Stas Malyshev
2
| 3-Jun-15 What's new in PHP 5.3 | 2 5.2 vs 5.3 vs 6 5.3 is a major version, should be 5½.0 6 taking long time, features drift back No sudden moves in 5.x
3
| 3-Jun-15 What's new in PHP 5.3 | 3 Syntax Namespaces! Late static binding (static::foo vs self::foo) $classname::method() __callstatic() Goto ?: $NOWDOC = <<‘END’ __DIR__
4
| 3-Jun-15 What's new in PHP 5.3 | 4 Functions Phar – PHP Archive Pect/intl – ICU support MySQLnd INI magic – per dir, per user,.htaccess-style OpenSSL for OpenID SPL class library Date/time improvements Getopt() support E_DEPRECATED
5
| 3-Jun-15 What's new in PHP 5.3 | 5 Engine Garbage collection! Stack usage improvements Opcode optimizations System call reduction
6
| 3-Jun-15 What's new in PHP 5.3 | 6 Namespaces define(“MY_HTTP_GET”, 1); define(“MY_HTTP_POST”, 2); class My_Http_Request { function __construct( $method = ZEND_HTTP_GET) { } function my_http_send_request( My_Http_Request $request) { } namespace My::Http; const GET = 1; const PUT = 2; class Request { function __construct( $method = GET) { } function send_request( Request $request) { }
7
| 3-Jun-15 What's new in PHP 5.3 | 7 Namespaces Organize OO code into self-contained units Reduce conflicts Shorten names class Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensiti ve extends Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum Compile-time definition Mostly compile-time resolution Many NS per file, many files per NS Real names have ::
8
| 3-Jun-15 What's new in PHP 5.3 | 8 Namespaces – new syntax namespace foo::bar; use foo::bar as baz, boo::hoo::foo; __NAMESPACE__ namespace::foo ::foo() - means global one
9
| 3-Jun-15 What's new in PHP 5.3 | 9 Late Static Binding Gateway to ActiveRecord class Singleton { const ID = 0; static $instance = array(); static function getInstance() { $id = static::ID; if (empty(self::$instance[$id])) { self::$instance[$id] = new static; } return self::$instance[$id]; } class Foo extends Singleton { const ID = 1; } $x = Foo::getInstance();
10
| 3-Jun-15 What's new in PHP 5.3 | 10 Dynamic class name Everything can be variable, class name too class DbDriver { const NAME = “MySQLDriver”; static function execute($sql) { } $db = “DbDriver”; echo $db::NAME; $db::execute(“SELCT * FROM foo;”);
11
| 3-Jun-15 What's new in PHP 5.3 | 11 __callStatic __call’s static cousin class DummyDriver { const NAME = ‘Dummy’; static function __callstatic($name, $args) { echo static::NAME.“::$name is not implemented”; } class MySqlDriver extends DummyDriver { const NAME = ‘MySQL’; } $db = ‘MySqlDriver’; $db::execute(‘SELCT * FROM foo;’);
12
| 3-Jun-15 What's new in PHP 5.3 | 12 ?: Shortcut for $a?$a:$b $name = $_GET[‘name’] ?: ‘anonymous’;
13
| 3-Jun-15 What's new in PHP 5.3 | 13 goto Guess what it does ;) RETRY: try { … } catch (Exception $e) { recovery($e); goto RETRY; } Don’t try it at home – unless you know what you do Can’t jump into blocks
14
| 3-Jun-15 What's new in PHP 5.3 | 14 NOWDOC Repeat after me, exactly as I say it: $a = 3; $b = 5; echo <<<EOF $a+$b EOF;// prints 3+5 echo <<<‘EOF’ $a+$b EOF;// prints $a+$b echo <<<“EOF” $a+$b EOF;// printd 3+5 Note HEREDOC has two syntaxes now
15
| 3-Jun-15 What's new in PHP 5.3 | 15 __DIR__ __FILE__’s brother – constant dirname(__FILE__) class Foo { const BAR = dirname(__FILE__); // can’t! const BAR = __DIR__; public $bar = dirname(__FILE__); // can’t! public $bar = __DIR__; }
16
| 3-Jun-15 What's new in PHP 5.3 | 16 Phar Packs multiple PHP files into one.phar Supports streams & includes into phar Supports running CLI and Web apps from phar include ‘phar://mylib.phar/My/Http.php’; $img = ‘phar://mylib.phar/My/img/logo.jpg’; header(‘Content-type: image/jpeg’); echo file_get_contents($img);
17
| 3-Jun-15 What's new in PHP 5.3 | 17 ICU extension Supports internationalization functions from IBM ICU Collation (plain English: sorting) Number/Date/Message formatting Locale representation Normalization Graphemes
18
| 3-Jun-15 What's new in PHP 5.3 | 18 INI improvements Localized sections: [PATH=/var/www/html/mysite] [HOST=www.myblog.com].htaccess-style user files user_ini.filename = “.user.ini” user_ini.cache_ttl = 300
19
| 3-Jun-15 What's new in PHP 5.3 | 19 MySQLnd PHP-specific MySQL client library Uses Zend MM Reduces copying of data Uses PHP streams --with-mysql=mysqlnd
20
| 3-Jun-15 What's new in PHP 5.3 | 20 E_DEPRECATED Functionality that will be removed in next versions
21
| 3-Jun-15 What's new in PHP 5.3 | 21 Other function improvements OpenSSL support for OpenID openssl_digest(), openssl_encrypt(), openssl_decrypt(), DH key exchange Getopt() on all OSes with –support-long-options Faster md5() OCI8 connection pooling SPL class library additions: DoublyLinkedList, Stack, Queue, PriorityQueue, Heap FilesystemIterator, GlobIterator Date/time improvements date_create_from_format(), date_get_last_errors()
22
| 3-Jun-15 What's new in PHP 5.3 | 22 Garbage collector Collects memory lost in loops Invisible to the untrained eye gc_collect_lops, gc_enable, gc_disable $a = array(); $a[0] =& $a;
23
| 3-Jun-15 What's new in PHP 5.3 | 23 Performance Bench.php
24
| 3-Jun-15 What's new in PHP 5.3 | 24 Thank you! Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.