PHP 5.3
-
Upload
scott-macvicar -
Category
Technology
-
view
1.161 -
download
1
Transcript of PHP 5.3
What’s New InPHP 5.3?
PHP UK February 2009Scott MacVicar
Friday, 27 February 2009
Feature Release
All PHP 5 code should still works
Backports everything except Unicode from 6
Bug fixes from PHP 5.2
Friday, 27 February 2009
Namespaces
Mostly done at compile time
Saves extra long prefixes (Yay framework developers)
Zend_Search_Lucene_Analysis_Analyzer_
Reduces class name conflicts
Multiple namespaces per file
Friday, 27 February 2009
Namespace Usage
Can Contain:
classes
functions
constants with the same name
Defined by statement namespace <x>;
Friday, 27 February 2009
\ as separatorFriday, 27 February 2009
You used \?!? WTF?
Symbol Use Symbol Use
% Modulus + Plus
^ Xor - Minus
* Multi / Division
~ Not \ ???
| Or : Else
& And ` Exec
Friday, 27 February 2009
Namespaces example
Friday, 27 February 2009
Namespaces example
Friday, 27 February 2009
Namespaces example
Friday, 27 February 2009
Other Namespace Things
__NAMESPACE__
global scope \
__autoload(), get_class() and get_parent_class() now return a full qualified classname
Resolves internally then externally
Friday, 27 February 2009
Namespace Oddities
Friday, 27 February 2009
Late Static Binding
Static references use to be resolved at compile time
Static constants would correspond to where they were defined
static:: is now resolved at runtime
Friday, 27 February 2009
LSB Example 1
Friday, 27 February 2009
LSB Example 2
Friday, 27 February 2009
Lambda Functions and Closures
Functions on the fly
Ideal for things that require a callback
create_function() is runtime based
__invoke method for Classes
Friday, 27 February 2009
Example - 1
Friday, 27 February 2009
Example - 2
Friday, 27 February 2009
Garbage Collector
GSoC 2007 Project
Looks for cyclic references
Increases overall memory usage slightly
Good for long running scripts
Friday, 27 February 2009
Cyclic Reference
Friday, 27 February 2009
Garbage Collector Usage
Friday, 27 February 2009
Dynamic Static Calls
Friday, 27 February 2009
Improved ini handling
Change PHP settings similarly to .htaccess when using FCGI
Per-directory ini settings
INI constants / variables
Friday, 27 February 2009
INI Example
Friday, 27 February 2009
__callStatic
__callStatic($name, $arguments)
Identical to __call but for static methods
Friday, 27 February 2009
__callStatic example
Friday, 27 February 2009
Limited goto
goto is a bad idea™
PHP provides goto <label>
Can only jump out of a structure
Friday, 27 February 2009
goto example
Friday, 27 February 2009
?: Operator
Friday, 27 February 2009
SPL ImprovementsDualIterator
RecursiveTreeIterator
SplArrayReference
DirectoryIterator implements ArrayAccess
SplStack
SplQueue
SplHeap
SplFixedArray
Friday, 27 February 2009
NOWDOCLike heredoc but without evaluation
Friday, 27 February 2009
enchant
Speel Cheking
Wraps around existing libraries
Supports platform dictionaries
HunSpell (Firefox, OpenOffice)
AppleSpell (OS X default)
Friday, 27 February 2009
fileinfo
Guess content type and encoding
Looks for magic byte sequences
Previously required external library
Provides mime_content_type() support
Friday, 27 February 2009
intl
Wrapper around IBM’s ICU library
Provides collation, normalization, datetime and number / currency formatting
IDN Support
Friday, 27 February 2009
MySQLnd
Developed by MySQL
Replaces libmysql and is bundled
Faster and uses less memory
Statistics
Friday, 27 February 2009
phar
Similar to Java’s JAR
PHP 5.3 can open and read phars
Can mount internal phar directoriesPhar::mount(“cache/”, “/tmp/cache”);
Works with OPCode caches
Friday, 27 February 2009
Phar Example
Friday, 27 February 2009
Using Phar
Make a stub file
Build archive
Rejoice
Friday, 27 February 2009
SQLite3
OO API
Replaces old SQLite class
Bundles full text search
SQLite 3.6.11
Friday, 27 February 2009
Extensions removeddbase
fbsql
fdf
ncurses
ming
pspell
sybase
Friday, 27 February 2009
New Constants__DIR__
PHP_MAJOR_VERSION
PHP_MINOR_VERSION
PHP_RELEASE_VERSION
PHP_VERSION_ID
PHP_DEBUG
PHP_MAXPATHLEN
Friday, 27 February 2009
Improved Performance
New scanner based on re2c
md5() now faster
require_once / include_once faster on second usage
Improved memory usage due to constants being marked as read only
Friday, 27 February 2009
Improved Performance
Improved engine stack implementation
Removed direct executor recursion
Use fastcall calling convention on x86
Various opcode optimisations
Friday, 27 February 2009
MiscellaneousOver 180 bug fixes
PCRE upgrade
SQLite upgrade
Stream improvements
OpenSSL improvements
Make JSON suck less
Friday, 27 February 2009
Beers for Bugs
Friday, 27 February 2009
Questions?
Go download and test!
http://qa.php.net/
http://windows.php.net/downloads.php
Slides
http://talks.macvicar.net
Friday, 27 February 2009