Articles about: Software Development

Setup Step Debugging in PHP with Xdebug 3 and Docker Compose

Setup Step Debugging in PHP with Xdebug 3 and Docker Compose

April 10, 2021

In versions of Xdebug before version 3 setting up step debugging for code inside Docker containers has often been challenging to say the least. However, in version 3 it’s become almost trivial. In this short tutorial, I’ll step you through what you need to do, regardless of the (supported) text editor or IDE you’re using.

How to Use a CSRF Token in a Mezzio Application

How to Use a CSRF Token in a Mezzio Application

April 2, 2021

No matter how small your web app may be, security is essential! In this tutorial, you’ll learn how to add a CSRF token in forms used in Mezzio-based applications, to prevent attackers from being able to force your users to execute malicious actions.

How to Manually Create a Mezzio Application

How to Manually Create a Mezzio Application

April 13, 2020

If you want to build applications in PHP — from one-page apps to enterprise-grade applications — PHP’s Mezzio framework is a excellent framework to choose. In this tutorial, which is an excerpt from my new book, Mezzio Essentials, I’ll show you how to manually build an application in Mezzio.

Goodbye Master Zend Framework. So Long. Farewell.

Goodbye Master Zend Framework. So Long. Farewell.

April 8, 2020

It’s with some sadness, that earlier this week, I wished a fond farewell to the biggest blog I ever created, Master Zend Framework. Given that, it only feels right — and responsible — to talk about what motivated the decision to close the blog, and what the future holds for the blog’s content.

The Essentials of Learning Java

The Essentials of Learning Java

April 16, 2020

If you’re getting started learning Java, whether because you want to or you have to, I want to help you out, as I’m learning Java again too. In this post, I set out what I think you need to know to get started with it, or what your first few steps will likely entail.

A Short Introduction to Postman

A Short Introduction to Postman

April 10, 2020

Debugging requests can be a time-consuming process. However, there’s a tool that makes doing so a lot simpler. It’s called Postman. In this tutorial, I step you through its core features and show you how to use them.

How to Run Tests in PhpStorm

How to Run Tests in PhpStorm

April 3, 2020

PhpStorm offers so much functionality. From syntax highlighting to Docker integration, it’s an extremely comprehensive tool. However, have you ever thought of using it to run your unit tests? In this article, I step you through running tests, from an entire suite to an individual test.

Fix a Commit History With Git Interactive Rebase

Fix a Commit History With Git Interactive Rebase

April 28, 2019

Git interactive rebase is a powerful tool that can help you fix up your commit history to make it more meaningful, professional, and maintainable. In this post, I step through what it is, how it works, and when you should — and shouldn’t — use it.

Command-Line Productivity Hack - ctrl+x+e

Command-Line Productivity Hack - ctrl+x+e

April 21, 2019

There are lots of tips, tricks, and ideas around for hacking your command-line productivity to make you more efficient. However, in this post, I’m not going to show you something that’s super in-depth, ultra-detailed, or talk about an app that you have to install, ctrl+x+e.

How to Set Up PHP Debugging with PhpStorm, Xdebug, and PHPUnit

April 3, 2019

Still using var_dump to debug your PHP code? Stop! While var_dump can be convenient, it’s a very blunt approach. In this article, I’ll show you how to set up proper debugging with PhpStorm, Xdebug, and PHPUnit, and give you a modern, sophisticated debugging experience.

Why Is My Website So Slow?!

April 27, 2019

Is your website (or web-based application) not performing like you expect it should? Not sure why or what to do about it? Then come learn about some key things you can do to have your website perform properly.

Don't Write Code When You Don't Have To

April 16, 2019

Writing code is a very creative endeavour. However, if you’re not careful, you may well end up wasting a lot of time writing code that you don’t have to.

4 Git Command-Line Tips for Greater Productivity

April 23, 2019

Git, despite still being a bit terse, is extremely powerful version control software. However, because it’s so powerful, it takes time to learn. In this post, I’m going to show you four small techniques to help you use it more effectively.

Are You Too Wedded To Your Text Editor?

Are You Too Wedded To Your Text Editor?

April 10, 2018

I’ve been a proud VIM user for years — dating back as far as 1999 — but especially so, since I pushed myself to learn it properly a few short years ago. However, I wonder if I’ve become too wedded to it. And I’m keen to find out if you are too.

What Are Delegator Factories and Why You Should Use Them

April 26, 2018

Ever wanted to dynamically expand the functionality of an object which you retrieve from your dependency injection container, based on different needs, yet without creating messy, hard to maintain configurations? Then you’re going to want to know about a powerful new technique - called Delegator Factories.

Easy Git Interaction with OhMyZsh and Git Extras

April 16, 2017

Git is known to be incredibly terse, though it has improved in recent years. What’s more, there’s a plethora of commands that you need to remember. So, why not learn about OhMyZsh and Git Extras and make your life with Git easier!

How to Get GitHub-like Diff Support in Git on the Command-Line

How to Get GitHub-like Diff Support in Git on the Command-Line

April 24, 2017

If you use Git as your VCS (version control system), you’ll know that it has excellent diff support on the command line. However, even as good as it is, it still leaves a bit to be desired — at least when compared with tools such as GitHub.

How to Create a Zend Expressive Module

April 25, 2017

Ever thought of creating a Zend Expressive module, one that either scratches an itch or allows you to use a set of related functionality across multiple Zend Expressive projects? I created one recently and share how I did it with you in this three-part series.

Vim - The Distraction Free Editor

Vim - The Distraction Free Editor

April 20, 2017

A little while ago, I took to Twitter in a sense of jubilant excitement announcing that VIM was THE distraction-free editor. As it’s been quite some time since, I honestly don’t remember exactly what it was that motivated me to do so.

Visual Debt. Really?

Visual Debt. Really?

April 14, 2017

Recently, Jeffrey Way dateed what’s become quite a controversial video in the PHP community on Laracasts, discussing a concept called Visual Debt.

Create Modules and Middleware with Command-Line Tooling Support

April 31, 2017

For the longest time, Zend Framework hasn’t had the strongest support for command-line tooling and scaffolding. However, in recent times, that’s all changed. Come find out how to use Expressive’s new tooling support to create modules and middleware rapidly.

Deploying With Docker - Take 1, Or "Houston, We Have a Problem"

Deploying With Docker - Take 1, Or "Houston, We Have a Problem"

April 3, 2017

A little while ago, I wrote two parts in a multi-part series about using Docker. As someone who’s reasonably new to Docker — and been bitten by the Docker bug — I wanted to share what I’d learned, in the hopes that others may benefit.

How to Debug a Docker Compose Build

How to Debug a Docker Compose Build

April 18, 2017

If you’re using docker-compose to build a Docker container setup and something’s not working, here’s a basic process you can follow to find out what happened, and get your containers up and running properly.

The Composer Command-Line Essentials

April 29, 2016

How well do you really know Composer? Do you just know composer install, update, and require, and some of the composer.json configuration? Or do you really know it? In this series, you’re going to take your skills to the next level; starting with the command-line.

Becoming a Polyglot Developer (again)

Becoming a Polyglot Developer (again)

April 10, 2016

I’ve been developing software in PHP for a long time. But I recently decided to return to my polyglot roots, developing in multiple languages on a regular basis. The question is, which language, or languages, are the right ones to learn and use.

How To Easily Navigate Your Codebase With PhpStorm

How To Easily Navigate Your Codebase With PhpStorm

April 6, 2016

If there’s one thing that we as developers to do on a regular basis it’s navigate through code. In this tutorial, I’m going to show you a range of ways in which PhpStorm does so, minimising the effort required by us.

How To Build a Local Development Environment Using Docker

April 29, 2016

Building a local development environment which mirrors production hasn’t, historically, been an easy task. But with Docker, it’s become, virtually, trivial. Come learn how to setup a local development environment using Docker for developing Zend Expressive (and other PHP) applications.

How To Use Laravel’s Eloquent ORM with Zend Expressive

April 22, 2016

Laravel’s Eloquent ORM isn’t likely the first one you think of when using Zend Expressive. You likely think of Zend\Db or Doctrine. But, with a little bit of work, it’s possible to use Eloquent with Expressive. Today’s tutorial shows you how - step-by-step.

What I Learned Building a Zend Expressive Application

April 5, 2016

Zend Expressive is an excellent framework for building modern applications; whether micro or enterprise-sized applications. But that doesn’t mean that it’s the easiest to get up to speed with. Today I’m going to share with you what I’ve learned, building applications using it.

How to Simplify Development with the Repository Pattern

April 23, 2016

In a recent application I found that I was too bound to a database as the application’s data source and wanted to decouple from it as much as possible, whilst using the least amount of effort. During research into the required changes, I came across an excellent pattern which gives a lot of flexibility, yet which doesn’t require a lot of code - it’s called the repository pattern.

How to Edit Consistently Using EditorConfig

April 18, 2016

When working with other developers on a project, editor and IDE differences, whilst not fatal, can be annoying, and even violate group coding standards. Put an end to that by using EditorConfig.

How to Enable Form View Helpers in Zend Expressive

April 16, 2015

Zend Expressive is a great foundation on which to build an application, especially if you want to keep it small and lean. But out of the box, form view helpers aren’t available. Here’s how to make them available.

Introduction to Zend Expressive (Part 2)

April 9, 2015

Over the last number of months the Zend Framework team’s been hard at work on Zend Framework 3. And there are major changes afoot. In this 2-part series, we look at one of the core components - Zend Expressive.

Introduction to Zend Expressive

April 2, 2015

Over the last number of months the Zend Framework team’s been hard at work on Zend Framework 3. And there are major changes afoot. In this 2-part series, we look at one of the core components - Zend Expressive.

Howto Handle External Form Element Dependencies with FormElementManager

April 22, 2014

Zend Framework 2, like all great PHP frameworks, provides thorough infrastructure for creating forms in your application. Whether that’s form objects, form elements, fieldsets, validation groups or that they interact with so many other components in the Zend Framework 2 default libraries. But how do you handle external dependencies?

\Zend\Db\Sql - Creating Joins and Unions with Ease

April 27, 2013

In part two of the \Zend\Db\Sql\Select series, we create inner, outer, left and right joins as well as union queries with ease. Come learn more about building queries simply, effectively and easily in your every day applications with Zend Framework 2.

6 XPath Queries to Boost Your Performance + A Bonus Tip

April 26, 2012

When you’re working with HTML day in and day out, very often the same types of tasks come up repeatedly. Whether you’re generating content to be displayed with PHP or jQuery, whether it’s server or client side, it’s not an easy task. You Need a Helping Hand!

Rename uploaded files with Zend Framework

April 15, 2011

Recently I was asked how to rename a file with the Zend Framework that used a Zend Form and Zend File element. They key requirement was that it should not be a hack or a kludged solution. So I thought I’d write a quick post to provide a simple example on how it was achieved.

The Zend Framework Bootstrap made simple (Part 3)

April 9, 2011

Ok, we’ve established that with the Zend Framework, we need to do a bit more work than some of the other frameworks to get up to speed - but that’s not necessarily a bad thing - right?! But it can be a bit tedious and it’s something as professional developers, we want to automate away. So we’ve been addressing in this series how to do just that with a custom, extendable bootstrap class.

In the first part of the series we laid the foundation of our custom bootstrap class by creating a custom class directory structure, adding its namespace to the application ini and modifying the default application bootstrap so that it extends from it and had a look at the first component - caching.

Then, in the second part of the series, we built on the foundation laid in part one by creating plugin resources for the routing table, application navigation and the database connections - these being some of the most common tasks, usually, associated with a web-based application.

In this, the third and final part of the series, I’m going to finish up by looking at application placeholders and surprise, no not logging as originally promised, but pagination. As an added extra, we’re going to be using a key feature of Zend Application to make it a breeze.

The Zend Framework Bootstrap made simple (Part 2)

April 2, 2011

In the first part of the series, you’ll remember that we laid the foundation of our custom bootstrap class by creating a custom class directory structure, adding its namespace to the application ini and creating our custom bootstrap file that our application bootstrap will extend from.

After we did that, we put in the first but arguably the most important plugin resource – caching and stored it in the application registry. In this post we’re going to be building on that work and adding in three new plugin resources: routing, navigation and databases.

The Zend Framework Bootstrap Made Simple (Part 1)

April 27, 2011

When you’re creating a new project with the Zend Framework, unlike other frameworks, you need to do more legwork. This isn’t necessarily a bad thing, but it can sure slow you down when you’re trying to plough through a project.

I really enjoy using it, as it has a very well structured approach – and I like structure – it clearly lays out a file-system structure for modules, controllers, actions, forms, models and so on. It has good, but basic, tooling, allowing for modest project initialisation. But despite all this, it still requires a healthy investment on our part to get a proper foundation in place to use it productively.

In a recent project I encountered this situation and felt that I mustn’t be the only one to do so. As I plan to keep using Zend Framework I want to work around this situation and get as much productivity out of it as possible right from the get go. But how to do this?


Well the primary focus for me is bootstrapping. It provides the majority of the core services that every project needs, from routing, data source connections, authentication, authorisation, navigation, caching and so on. So it stands to reason that it’s a good place to start. So I want to cover what should go in to a good working bootstrap.

Zend Form - Multiple Submit Buttons

April 8, 2011

Let me describe said situation for you; The user has a list of items and they’ve chosen to delete one. Given such a volatile action, you want them to doubly opt-in and confirm that they want to do this.

The last thing you want your user to feel, after they’ve clicked the delete link, is “NO WAAAAAAIIIIT! I didn’t mean to do that”. So the user clicks &’delete&’ and is directed to a confirmation page (which is rendered with Zend Form). There are two buttons on the page; the first is “Delete Item”, the second “Cancel”.

If the user clicks either button, the form submits to itself, where the value of the button clicked is determined. If the user clicks “Delete Item”, then the deletion is carried out, deleting the item from the datasource. If the user clicks “Cancel” the user is returned to the list of items they were previously viewing, the item is not deleted and the user is provided a message, confirming the non-deletion.

Extending Zend Auth - A Zend Config Adapter

April 23, 2011

So in the last installment of this series, I provided an introduction to Zend_Auth, Zend_Auth_Adapter_Interface and Zend_Auth_Result and how to implement Zend_Auth_Adapter_Interface to implement a basic test adapter that can be used as a mock object in your testing.

If you missed it, check it out now, then come back and we’ll continue on. If you’ve already read it, then let’s continue now.

As I indicated last time, whilst being a perfectly valid implementation, the Test adapter was rather basic and didn’t do very much. Like all good testing, you need flexibility and options. So in this installment, we’re going to build an adapter based around Zend_Config. This will lead quite nicely in to the last part in the series which uses the wonderful MongoDB as the underlying resource for the adapter.

Extending Zend Auth With A Test Adapter

April 21, 2011

Zend_Auth provides a very extensible workflow for creating new adapters to suit your authentication needs. In this post, I start you off with a simple Test/Mock adapter.

Scalable Logs with ZeroMQ and Zend Framework

April 20, 2011

Do you want a scalable, high performance PHP application that logs everything in an intelligible manner; in a manner that you can use now, tomorrow and three weeks from now? It’s so possible! In a series of posts, I am going to show you how to put it together using Zend Framework, ZeroMQ and Hadoop.

Extending Zend Auth — The HowTo Series

April 17, 2011

Zend Auth, if you want to secure a Zend Framework app, along with Zend Acl, it’s essential. But do you know what it is? Do you know how to use it? Do you know how to extend it? Through this series I’m going to show you how to do all three.

Internationalizing PHP Applications With TMX

April 14, 2011

phpMagazin recently did a good job of covering Zend_Translate; specifically what it is, how it works and four of the basic translation adapters; those being Array, CSV, Gettext and Ini. However, what they didn’t cover was what I think, is one of the best choices of adapters that Zend_Translate has; which is TMX.

Zend Framework and mongoDB – Getting Started Quickly!

April 9, 2011

This is a mini-post showing you how to get up and running with mongoDB and Zend Framework using a series of third-party libraries, including Shanty-Mongo library. To be honest, it’s rather trivial, but sometimes it can be frustrating trying to find a simple, concise, reference on how to do it, specific to just your needs.

11 Reasons Why a PHP Framework is Better Than Raw PHP

April 27, 2011

After stating our 11 Reasons Why A PHP Framework is better than Raw PHP, here’s 11 Reasons Why A PHP Framework is better than Raw PHP It, often, has a solid community of professionals developing and supporting it It’s, often, coded to an exacting, mature, coding standard It has a solid development history, reviewed by many eyes It has defined methods of doing repetitive things quickly and simply You’re not on your own and call fall back on people for support It’s, often, simple to link in with existing 3rd party libraries – quickly and easily You’re working within clear constraints and development concepts You can bring in developers already experienced with using and deploying it There are tried and true practices for deploying it There are tried and true practices for testing it Frameworks carry brand and industry recognition What do you think?

11 Reasons Why Raw PHP is Better Than a framework

April 20, 2011

Here’s My 11 Reasons Why Raw PHP is better than a Framework It’s faster as it doesn’t have the framework library overhead It can be cleaner, lacking legacy cruft You can craft it exactly as you want it You’re not bound by someone else’s rules or concepts You can add in as many or as few 3rd party libraries as you choose You can write to your own standard It is portable You can license it as you choose You set the standard by which it is judged You build the philosophy of the project The work is all yours to live or die by What do you think?

10 Reasons Why Zend Framework is a Mature Choice

April 13, 2011

Zend Framework, one of the big frameworks today. Is it the right choice, is it the wrong choice? We believe it’s one of the right choices for professional PHP development. Here’s 10 reasons why!

Zend Framework — 10 Must Dos

April 6, 2011

The Zend Framework, whilst a great tool, is often slighted for being big and bloated.  Now I’m not contesting that, but it does have a heck of a lot going for it. So if you’re going get the most out of it, then you need these 10 tips.

Zend Framework, a Truly RAD Framework!

April 24, 2011

Like any profession or trade, you can spend years refining your craft; always looking for the path of least resistance; the path of greatest simplicity, which leads to your goals in the shortest time and the least amount of effort. Especially in software development, you try to simplify and automate as much as you can. Not only do you save unnecessary time, but you get to devote your energies to the most meaningful aspects; the areas that bring greatest productivity and satisfaction to you and your client or employer.

Writing a Secure, RESTful Service in Zend Framework (Part 2)

April 25, 2010

In this article, a follow up to writing a secure, Restful service with the Zend Framework, I’m going to cover the HTTP status codes that you should use, where and when. The reason for this is that they’re a fundamental aspect of the interaction with the service. You get this right and you will make it so much better for clients to use your service; you get it wrong and you may only have a few users and they may do a lot of work for very little gain.

Writing a Simple Blog With Zend Framework and MongoDB

April 7, 2010

I’ve been using mongoDB and Zend Framework to make a simple, replicatable filesystem. As it went well, I thought that I could quickly apply what I’d done to create an ultra-simple blog system. Read on to find out all about it.

How to Write a Secure RESTful Service in Zend Framework

April 5, 2010

So you’re up with the RESTful buzz but you’re concerned about security; as you should be! So what do you do? Well, like all good OOP practitioners, you don’t reinvent the wheel. As Steve Jobs said, “Good artists create, Great artists Steal”, or borrow in our case. So let’s look at the Amazon S3 model and implement that with our framework of choice - Zend Framework to protect your RESTful services.

JSON, XML, RSS, CSV - it's all a ContextSwitch away!

April 19, 2010

Do you love the variety of formats that you can publish and subscribe to in this veritable golden-age of computing we’re enjoying? Same here. Whether it’s JSON, XML, RSS, Atom, CSV or even Excel format, there’s just so much choice.

The challenging thing is that though there’s so much choice of format, there are also so many demands to use them - ALL. So what do you do when your boss, client, friend, family-member (whom you’re the technical support person for) requests this for their blog or site?