Upload
graham-weldon
View
16.017
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Slides for my talk at OSDC PHP MiniConf. November 14, 2011.
Citation preview
PHP 5.4Begin your love affair with Traits
- Graham Weldon
Graham WeldonPHP developer since... forever
CakePHP contributor/ evangelist
Serial conference speaker
Gaming enthusiast
Beer drinker
http://grahamweldon.com
http://cakedc.com
http://cakephp.org
Twitter: @predominant
SydPHPWe’ve got awesome stuff coming up
Visit us! http://sydphp.org
November Meetup
December “Phunconference 2”
January Australia Day BBQ
What PHP Version?
PHP 4
PHP 5.1
PHP 5.2
PHP 5.3
PHP 5.4
PHP 6 (Yes, there are some people using it)
0
25
50
75
100
PHP 3PHP 4
PHP 5PHP 6
Data courtesy of w3techs.com
0
20
40
60
80
5.0 5.1 5.25.3
5.4
Data courtesy of w3techs.com
PHP 4 to PHP 5 was a painfully slow upgrade for the global community
Shared hosts retained old versions
Object handling was different
PHP 5.1 on CentOS
People don’t upgrade stable systems
PHP 5.2 massive exposure
Again, people don’t upgrade stable systems
PHP 5.3 used, but not fully
Traditionally slow adopters
Why slow adopters?
Shared hosts
Established applications
Upgrade path
Old excuses
Why adopt early?
New language features
More elegant ways to solve problems
Cleaner code
Adopting early gets you noticed
What about instability?
Be sensible with production-ready systems
Don’t use the bleeding edge
Confirm functionality
Unit Testing
Integration testing
Load testing
If your tests pass, then phase in the new system
Use sensible reporting / monitoring
Enter PHP 5.4 (RC1)
PHP 5.4-RC1
RC1 was released for QA on 11th November 2011
Some new features, plenty of bug fixes
You can download it for yourself!
http://qa.php.net/
Give it a try
See if your applications run on it
PHP 5.4New Language Features
and Improvements
Upload Progress
Binary Notation!
Array short syntaxhttps://wiki.php.net/rfc/shortsyntaxforarrays
Array dereferencinghttps://wiki.php.net/rfc/functionarraydereferencing
Class member accesson instantiation
Closures (Current)
Closures (Array)https://wiki.php.net/rfc/indirect-method-call-by-array-var
But this doesn’t work... :-(
Closures and ‘$this’https://wiki.php.net/rfc/closures/object-extension
Callable Typehinthttps://wiki.php.net/rfc/callable
JsonSerializable Interface
Short Tag echo - Always available
Oh, and there is a built-inweb server now. Yay?
PHP Traits
Whats the big deal?
Elegant code re-use
Without complicated multiple inheritance
No diamond issues
Kinda like interfaces
But provides implementation
Other languages are doing similar things
PHP is keeping up with the trends
A look atGolang interfaces
PHP’s approach
Traits define small sections of reusable code
This code can be included in any class
There is a loading precedence order
Puts developers in control
Looks a feels natural
No need to write things twice
Override capabilities
PHP TraitsExample
PHP TraitsExample
PHP TraitsReal Example
SometimesTraits needAdjustmentMaybe log() needs tobe public in youruse case.
ChangeMethodsas you likelog() is now accessibleto the User instancein this context.
CustomiseFurtherChange method namesif you’re into thatsort of thing.
Provide preferences.
Its over!Questions?
Graham Weldon
Twitter: @predominant
http://grahamweldon.com
http://cakedc.com
http://cakephp.org
Get in touch if you want to know more about this presentation, PHP in general, or anything. :-)