Nobody talks about visual debt. It's not a thing. Yet it is. We all spend eight hours a day staring at a computer screen. Like it or not, each line of code is fighting for your brain power and energy, and we only have so much to give. Sadly, the current trend in the PHP community is one that pushes for more complexity, not less.
One of the most compelling features of PHPStorm relates to its PHPUnit integration. What if a single keystroke could trigger a test? And what if, anywhere in your project, you could re-trigger that very test in less than a second? How would that affect your workflow? It's all a cinch in PHPStorm.
Destructuring in PHP 7.1 is one of the more useful additions to the language...that you probably aren't using. If you have three minutes to spare, let me run you through a handful of use cases.
I was recently listening to an episode of Twenty Percent Time, where they discussed one of the recommendations in my Whip Monstrous Code into Shape series that relates to using single-use traits. In this PHP Bit, let's review the basic workflow, while discussing the pros and cons of such a refactor.
How on Earth could the ternary operator improve my interfaces? Well, as it turns out, they can do this very thing quite easily! Choose a sensible default, and then allow for an override. It's the best of both worlds.
PHP's magic __invoke
method is a useful tool to have in your belt, even if you likely won't reach for it too often. Any time that you want to piggy back on top of a closure, you may freely substitute an invokable class in its place. Let me show you how in this episode.
A useful refactoring tip is to seek out repeated method suffixes or prefixes like a hawk. Often, this indicates a class that is begging to be extracted. Let me show you in three minutes.
PHP's various reflection classes allow us to do all sorts of magical things. In fact, they're very much the backbone of Laravel's service container logic. In this lesson, we'll use the ReflectionFunction
class to inspect and dynamically build up the parameter list for any given closure.
*Series still in development. Check back often for updates.