DEV Community

Cover image for Stop the pain, upgrade to PHP 7
Adam Culp
Adam Culp

Posted on • Originally published at geekyboy.com on

Stop the pain, upgrade to PHP 7

When I was young I played football at my local middle school…very terribly. I didn’t enjoy running with the heavy pads in the heat, and I definitely didn’t enjoy running into and hitting the other kids, most of which were larger than me. But in high school that all changed. Why? Because in middle school football was painful. Meanwhile in high school, well, it was still painful but there was something more pleasurable to offset the pain. It was the praises from the coach and the sounds of people cheering my name that truly made the difference.

See, in middle school, the coach seemed to focus more on the larger kids who could bully others, or the popular kids whose parents were the cornerstone of our small community. However, in 9th grade, it changed a bit because the coach was great at distributing his attention to the entire team. He would tell me “good job”, or “you can do better”, and he even let me play a game while my skills were catching up. These are things I didn’t have before, and it made a huge difference. I came to love playing and worked harder than I ever had to stay first string all season long rather than being satisfied with sitting on the sidelines watching others play.

So, now you may be asking, “What does this have to do with upgrading to PHP version 7?” The answer, because many are letting the pain of moving to PHP 7 prevent them from experiencing the pleasure and rewards.

PHP version 7.0 was released almost 2 years ago. (1 year 10 months to be exact.) And many are still running PHP version 5.something. As a matter of fact, PHP version 7.0 is already going to run out of active community support in only 1 month and will only receive security fixes for another year after that.

You can see the supported versions of PHP at http://php.net/supported-versions.php

The Pains

I get it. Upgrading to a new major version is painful. There are backward compatibility issues that caused it to be a new major version, to begin with, and now we need to jump through some hoops without any good reason. I mean, the app already works, right?

Add to this that there may be compatibility issues that have nothing to do specifically with PHP, but rather the individual libraries and packages we used in the past have not updated yet. Dependency hell is only a step away.

Also, how can we possibly endure the pain of explaining why we should upgrade to PHP version 7+ to management!?!

So we should just give up. Perhaps remaining on PHP 5.4, 5.5, or 5.6 is not so bad after all.

NO WAY! Read on!

Acclimation

Those pains aside, there are more that we’ve become acclimated to over time. We avoid upgrading because we’ve become used to the pain faced on a daily basis with what we currently have. It has become our comfort level. Meaning, we avoid the pleasures of advancing because we settle for what we already know.

Pleasure

In case you haven’t heard, PHP 7 brings a whole new level of FAST. Some companies have even recorded speeds of some apps to double. You read that right, “Double the speed in some apps.” That means customers get served web pages in half the time. Internal employees are able to navigate intranets, accounting software, and other internal apps in half the time. Imagine the productivity gains and reductions in salary required to have employees sitting at a screen waiting for the next page to come up. Imagine the customers who don’t click away from our products because it now loads faster!

In addition, many companies also noticed their resources (servers) running PHP apps with PHP 7 have dropped drastically. (about half) Meaning they can serve the same PHP applications on half the number of servers they used previously. If a company was using 100 servers to do business, they are now able to do the same thing with only 50 servers! That is a saving of 50 fewer servers needing to be hosted. Imagine the carbon footprint impact of that!

Note: Your mileage may vary, but many have shared real-time stats on this.

Some supporting posts and stats:

There are other pleasures of upgrading to PHP version 7.0. Among them are new features in the PHP language, such as scalar type declarations, return type declarationsnull coalescing operator, spaceship operator, constant array using define(), anonymous classesUnicode codepoint escape syntaxClosure::call()Filtered unserialize(), IntlChar, Expectations, Group use Declarations, Generator Return Expressions, Generator Delegation, Integer division withintdiv(), Session options, preg_replace_callback_array(), and CSPRNG functions

The upgrade to PHP version 7.1 brings pleasures in the form of even more performance improvements, as well as, Nullable types, Void functions, Symmetric Array Destructuring, Class Constant Visibility, iterable pseudo type, multi-catch exception handling, support for keys in list(), support for negative string offsets, convert callables to closures, asynchronous signal handling, and HTTP/2 server push support in ext/curl

And PHP version 7.2 also looks to carry many more great things, as PHP 7.3 is gaining form.

In Closing

Yes, there may be a little pain in upgrading to PHP 7, but overall the good parts far outweigh the pain. You’ll be glad you did it.

What are you waiting for? Get out there and feel good by upgrading your apps and servers to PHP 7 today!

Not to make this a sales pitch, but if you need any help upgrading, let me know. My team at Rogue Wave are here to help.

There is a great recorded webinar sharing more thoughts on migrating to PHP 7.

Happy PHP’ing!

Top comments (7)

Collapse
 
daveklotzer profile image
Dave Klotz

as part of a good upgrade path, I assume you have some kind of unit/smoke testing that is being run to iron out the deprecated or obsolete functions, rather than trying to fix this through a trial and error process? is there a framework you can recommend for php testing?

Collapse
 
fishfacemcgee profile image
Brian Graham

When we did our upgrade at work, we ended with a upgrade path along these lines:

  • Set up CI unit-test-running jobs in PHP 5.6 and PHP 7.1
  • Require tests pass in both environments in order for code to be merged
  • Make PHP 7.1 the only version of PHP available on the development team VMs
  • Make PHP 7.1 the only version of PHP available on our staging server
  • Run static analysis against the codebase (Phan and PHPStan are both good options if you can get a 7.x environment running)
  • Extensive manual testing to cover what the automated testing did not
  • Perform the rollout in a way that you can easily roll back if you run into issues.

As far as automated testing tools, PHPUnit is our go-to and we also have acceptance testing via Codeception.

In my experience, if you've been working in PHP 5.6 for a long time, there won't be many compatibility issues in your app code. The bigger risk will be in third party libraries, especially if you haven't been keeping on the bleeding edge with them.

Collapse
 
menjilx profile image
Menj

following

Collapse
 
leslieeeee profile image
Leslie

If you are a macOS user, ServBay.dev is worth to try. You don't need to spend some time or couple of days to setup anything. Just download it and you can use it immediately. You can run multiple PHP versions simultaneously and switch between them effortlessly, so can stop your pain.
Honestly, this tool has greatly simplified my PHP development and is definitely worth trying!

Collapse
 
ahmedarain3 profile image
ahmedarain3

Thank you for your guidance. PHP 8.2 is released with new features and options. B. PHP 8.1 introduced native support for enums. Enums allow developers to define a set of named values ​​with a predefined list of options. Fibers bring easy collaborative multitasking to PHP. It allows developers to write asynchronous code using well-known synchronous programming techniques. PHP 8.1 introduces the ability to define read-only properties on classes. It also introduces the ability to specify type annotations when deserializing objects using the deinialize() function. This allows developers to enforce type safety and prevent potential security vulnerabilities when deserializing untrusted data. etc

Collapse
 
donegrab profile image
AJ sabbir

PHP 7.x to PHP 7.4 has Zend string vulnerabilities check Ioncube encode article. But i think for now 8.1 is the best.

Collapse
 
aheisleycook profile image
privatecloudev • Edited

abit late but php 8.03 is out now.
edit: its actually 8.0.7