Modern applications demand performance, scale, security, and high availability. Is PHP able to meet these challenges? PHP is 25 years old–ancient, compared with the likes of Node.js, Go, TypeScript and Rust-–-but it still powers almost 80% of the web today. It succeeds because it continues to evolve and improve with each iteration by absorbing best practices from other runtimes and adapting to new challenges.
Refactoring is a topic that is frequently in vogue, and one that comes up when we are facing technical debit. This article will present some common issues we often find in applications and show some refactoring techniques to solve these issues and make code more easily maintainable.
Functional programming is a paradigm that has gained in popularity recently with the rise of several new functional programming languages and integration of new features in existing languages. All the same, there are many concerns about functional programming in the developer community. Is functional programming useful for the PHP developer? Will it add complexity to my codebase? This article will respond to some of these misconceptions.
This month, we move on from our grid and maze-based puzzles to another stand-alone puzzle parsing strings. We’ll take a string of text containing whitespace-separated words and turn them into hashtags for social media posts.
The modern web is quite literally built on APIs. I do not mean this in a philosophical sense or to point toward an idea like “API First” design. However, the fundamental way that data is passed back and forth on the web is structured around the concept of an API. As the internet and web grew, the ability to cheaply and easily pass text and binary data over HTTP became easier than developing network transfers from scratch. Point your application at a URL and have it parse the response.
Welcome to the second installment of our containerization journey ast month. We covered container basics, Docker installation, and running command line PHP images. This month we’re focused on building our local development environment with Docker coming from an existing Vagrant virtual machine configuration. We’re not jumping directly into overly complicated build targets and multistage builds just yet. Our goal is to run our application locally in Docker containers to replace our existing development virtual machine. Doing so will give us a better understanding of how each service container fits and work together.
Last month, we used Herbert O. Yardley’s “The Education of a Poker Player” to learn about testing business rules. This month we’ll explore what happened when the world shifted, and Yardley lost not just his job but his career. The lesson here will be “don’t be like Yardley”—yet Yardley’s story is, by all accounts, fascinating. Agnes (Meyer) Driscoll, like Yardley, was breaking codes on behalf of the USA. The world, too, passed her by. She failed to make the transition from pencil-and-paper to digital computing. Yet she’s fondly remembered as “the neglected giant.” We’ll begin with my own story of how my world shifted at the turn of the Millennium, bringing me to PHP.
There are many ways to store user credentials for verification on the application side. Only a few of those ways—namely hashing—are considered secure. While an “older” topic, let’s look at how you should store passwords and why it’s vital for every developer to know how to handle sensitive data securely.
This month, I sat down with Matthew Weier O’Phinney, a long-time member of the PHP Community and one of the leading contributors to the Laminas (formerly Zend Framework) project.
I’ve been doing web programming for over 20 years, most of that as a consultant, so I have worked on countless different environments over the years. I pride myself on following best practices and building applications ready to hold up for a long life. I always want to do things right, but over and over again, I learn that right is not always what is best.
Leave a comment
Use the form below to leave a comment: