PHP Articles

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

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?!

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.

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.

First Experiences with Symfony 4 & the Symfony Community

First Experiences with Symfony 4 & the Symfony Community

April 30, 2017

Recently, I decided to learn the basics of the Symfony (4) framework, so that I could better understand one of my client’s applications, and provide better support to it. I never expected to use such a well-rounded framework. Nor did I expect to encounter such an engaged and supportive community. Here’s the story.

Should You Learn That New Skill?

Should You Learn That New Skill?

April 1, 2017

A friend and I were talking recently about learning new software languages, and other technical concepts; something that most tech people do on a regular basis. But during the conversation, he brought up a really interesting point - how do you know when it’s worth it?

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.

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.

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.

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.

5 Reasons Coding Standards Are Essential

April 12, 2013

Whenever you’re developing web applications, are you consistent, do you apply a coding standard? Do you and your team have an agreed upon coding standard? If you don’t, you’re asking for trouble. Here’s Why

Zend Framework 2 Modules - The Application's Heart

April 2, 2013

<p><a href="http://www.masterzendframework.com/wp-content/uploads/2013/01/Post-Image.jpg"><!-- raw HTML omitted --></a></p> <!-- raw HTML omitted --> <blockquote> <p>If I have seen further it is by standing on the shoulders of giants.</p> </blockquote> <p>It’s a really exciting time at the moment with Zend Framework 2 gaining so much traction, after being stable for some time now.</p> <p>Though I and countless others really enjoyed the 1.x series, it did leave some things to be desired - to be fair.</p> <p>But the more I explore of the 2.x series, the more I honestly can say that I’m very impressed with it. It may not be as fast as the previous series, but with respect to development, there’s so much going for it it’s worth shouting about.</p> <p>So it really is rewarding and exciting to begin covering all that it has to offer us. In <a href="http://www.masterzendframework.com/articles-2/zend-framework-2-core-concepts-understanding-dependency-injection">part one of this series</a>, I looked at a central concept of the revised framework - <strong>Dependency Injection</strong>.</p>

What Is a Professional PHP Freelancer?

April 29, 2012

What is a Professional PHP Freelancer? It’s a tough question, but deserves asking. Today we have a series of questions to help you determine if you are.

How to Use the Zend Form ViewScript Decorator In All Modules

April 8, 2012

If you’ve been using Zend Forms for any length of time, you’ll know just how flexible and configurable they are. There’s not much that you can’t do with them, But it’s not always easy and there are catches. Today we look at ensuring that module-based Zend Forms using the ViewScript decorator can always be initialised no matter what.

Why Zend Framework Plugins Save You Time

April 5, 2012

During the recent development of the new PHP cloud development casts site, which has been developed with the Zend Framework, so much development time has been saved by using one of the simplest and arguably best features of the framework: Controller Plugins. So today I want to introduce you to them and walk you through a working plugin so you can see just how effective and efficient they can make your development workflow.

Zend Form Mastery with Zend Config – Part 4 Configuring Zend Validators

April 5, 2012

Welcome to the fourth and final part in the Zend Form Mastery with Zend Config series. Previously we looked at the basic form options, element and form wide prefixes, filters and element options. In this installment, we’re going to look at configuring Zend Validators via our XML config.

Beginning cloud development with cloudControl – Part 4 – Memcache

April 9, 2012

<p>Here we are at part four of the <em><strong>Beginning Cloud Development with cloudControl</strong></em> series and in this part, we’re adding <strong><a href="http://uk3.php.net/manual/en/book.memcached.php" title="php Memcached">Memcached support</a></strong>. In <a href="http://www.maltblue.com/php/beginning-cloud-development-with-cloudcontrol" title="Beginning cloud development with cloudControl">part one of the series</a>, we laid the foundation for the application and got up to speed with what <a href="http://cloudcontrol.com/?utm_source=maltblue&utm_medium=Banner&utm_campaign=MaltBlue" title="cloudControl: web - application - platform">cloudControl</a> is, why it works and how to get started using it.</p> <p>Then <a href="http://www.maltblue.com/php/beginning-cloud-development-with-cloudcontrol-part2-mysql" title="Beginning cloud development with cloudControl – Part 2 – MySQL">in part two</a>, we started to flesh out the application that we started building in part one and added MySQL support to it. We showed how to work with cloudControl to manage the key requirements, such as enabling MySQL support, connecting to the MySQL database and keeping the database up to date from a maintenance perspective (creating the database schema and loading data in to the database).</p> <p>Then in <a href="http://www.maltblue.com/php/beginning-cloud-development-with-cloudcontrol-part-mongodb" title="Beginning cloud development with cloudControl – Part 3 – MongoDB">the third part of the series</a>, we replaced MySQL with mongoDB support. Now, in this, the third part of the series, we’re going to finish up with adding <strong><a href="http://uk3.php.net/manual/en/book.memcached.php" title="php Memcached">Memcached support</a></strong>. As the core of the work’s already been done in the application, this tutorial will be shorter and simpler than the previous three. So, get out the code that you worked through from <a href="http://www.maltblue.com/php/beginning-cloud-development-with-cloudcontrol-part2-mysql" title="Beginning cloud development with cloudControl – Part 2 – MySQL">part 2</a>, or download a copy of it from <a href="https://github.com/maltblue/cloudcontrol-project" title="Malt Blue on github">the github repository</a> and let’s get started.</p>

Beginning cloud development with cloudControl - Part 2 - MySQL

April 16, 2011

<p><!-- raw HTML omitted -->In <!-- raw HTML omitted -->part one of the series<!-- raw HTML omitted --> we got a birds eye view of a great cloud development solution for <!-- raw HTML omitted -->PHP<!-- raw HTML omitted --> - <!-- raw HTML omitted --><!-- raw HTML omitted -->cloudControl<!-- raw HTML omitted --><!-- raw HTML omitted -->. We looked at the concept of what it is, what you can do with it and ran through a basic deployment with a rather basic application. If you missed the first part, I strongly encourage you to read it before continuing on with part two. When you’re done, come on back and work through it here.<!-- raw HTML omitted --></p> <p><!-- raw HTML omitted -->In this, part two of the series, things start to get more serious. <!-- raw HTML omitted -->In this part, we’re going to start to flesh out the application started in part one, adding in MySQL support - showing just how simple cloudControl makes this for us.</p>

Rename uploaded files with Zend Framework

April 15, 2011

<p>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.</p>

The Zend Framework Bootstrap made simple (Part 3)

April 9, 2011

<p>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.</p> <p>In the <a href="http://www.maltblue.com/2011/10/software-development/php/a-simple-bootstrap-for-the-zend-framework" title="A Simple Zend Framework Bootstrap">first part of the series</a> 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.</p> <p>Then, in <a href="http://www.maltblue.com/2011/11/software-development/php/frameworks/zend-framework/zend-framework-bootstrap-made-simple-part-two" title="The Zend Framework Bootstrap made simple (Part 2)">the second part of the series</a>, we built on the foundation laid in part one by creating plugin resources for the <em>routing table</em>, <em>application navigation</em> and the <em>database connections</em> - these being some of the most common tasks, usually, associated with a web-based application.</p> <p>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 <em>pagination</em>. As an added extra, we’re going to be using a <em>key feature</em> of Zend Application to make it a breeze.</p>

The Zend Framework Bootstrap made simple (Part 2)

April 2, 2011

<p>In the <a href="http://www.maltblue.com/2011/10/software-development/php/a-simple-bootstrap-for-the-zend-framework" title="A Simple Zend Framework Bootstrap">first part of the series</a>, 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.</p> <p>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.</p>

The Zend Framework Bootstrap Made Simple (Part 1)

April 27, 2011

<p>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.</p> <p>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 <em>modules</em>, <em>controllers</em>, <em>actions</em>, <em>forms</em>, <em>models</em> 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.</p> <p>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?</p> <h2 id="bootstrapping">Bootstrapping</h2> <p>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.</p>

Zend Form - Multiple Submit Buttons

April 8, 2011

<p>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 <strong>doubly opt-in</strong> and confirm that they want to do this.</p> <p>The last thing you want your user to feel, after they’ve clicked the delete link, is “<strong>NO WAAAAAAIIIIT! I didn’t mean to do that</strong>”. So the user clicks &'<strong>delete</strong>&’ and is directed to a confirmation page (which is rendered with <em>Zend Form</em>). There are two buttons on the page; the first is “<strong>Delete Item</strong>”, the second “<strong>Cancel</strong>”.</p> <p>If the user clicks either button, the form submits to itself, where the value of the button clicked is determined. If the user clicks “<strong>Delete Item</strong>”, then the deletion is carried out, deleting the item from the datasource. If the user clicks “<strong>Cancel</strong>” 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.</p>

Extending Zend Auth - A Zend Config Adapter

April 23, 2011

<p>So in <a href="http://www.maltblue.com/2011/06/tutorial/extending-zend-auth-a-test-adapter" title="Extending Zend Auth – A Test Adapter">the last installment</a> of this series, I provided an introduction to <em>Zend_Auth</em>, <em>Zend_Auth_Adapter_Interface</em> 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.</p> <p>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.</p> <p>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.</p>

Extending Zend Auth — The HowTo Series

April 17, 2011

<p>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.</p>

Zend Framework and mongoDB – Getting Started Quickly!

April 9, 2011

<p>This is a mini-post showing you how to get up and running with <strong>mongoDB</strong> and <strong>Zend Framework</strong> using a series of third-party libraries, including <strong><a href="https://github.com/coen-hyde/Shanty-Mongo" title="The Shanty-Mongo Zend Framework MongoDB library by Coen Hyde">Shanty-Mongo</a></strong> 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.</p>

11 Reasons Why a PHP Framework is Better Than Raw PHP

April 27, 2011

After stating our 11 Reasons Why A PHPFramework is better than Raw PHP, here’s 11 Reasons Why A PHPFramework 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 PHPis 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

<p>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.</p>

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

<p>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, <!-- raw HTML omitted -->XML<!-- raw HTML omitted -->, <!-- raw HTML omitted -->RSS<!-- raw HTML omitted -->, Atom, CSV or even Excel format, there’s just so much choice.</p> <p>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 (<em>whom you’re the technical support person for</em>) requests this for their blog or site?</p>