I played around with PHP7 over the weekend and I have to admit it has some very cool things I have wanted PHP to have for a while, and then some. Here are some of them (in no particular order):
-
Performance
PHP7 will increase the performance of PHP scripts by 50-60%. Nuff said.
-
Anonymous Classes
I have always been able to do this in Java where I can just define a required object and pass it along.
Now, you can do the same in PHP (I know that it is a double-edged sword and can leave your code un-organized
if not used wisely). Here is an example:addInsertListener(new Class implements DbInsertObserver { public function log($sql) { // log here } });
This can be pretty useful if all you are troubleshooting a production-only issue. Ideally, your testing
environment will be exactly like your production environment. And, you are able to re-produce every production
bug in QA but real world is rarely meets ideal standards. We, now, have anonymous classes to help. -
Scalar type-hinting and Return type hinting
Ever since PHP introduced type-hinting, I have been using it everywhere I can. It helps with static analysis of code
and helps prevent bugs (although I love the freedom that comes with PHP not being a statically typed language).Note: like previous versions of PHP, PHP7 will not force its user (the PHP developer) to type-hint anything. So, old scripts
will still work. -
Removal of date.timezone warning
Every time you use a date method, PHP would throw a warning if you didn't have a default timezone set in php.ini
or in your code (using date_timezone_default_set()). PHP would default to UTC and throw the warning. This warning
has been removed in PHP7. Good riddance. -
Null Coalesce Operator
Also called the isset ternary operator, gives you a more convenient way of ... doing this:
// Before PHP7 $someVar = isset($someArray['some_key']) ? $someArray['some_key'] : 'default value'; // In PHP7 $someVar = $someArray['some_key'] ?? 'default value';
There are more cool and useful features I have not mentioned here. You can read about them here: https://wiki.php.net/rfc
Leave a Reply