Learning to Work With (and Not Against) Your PHP Framework

Aug 23, 2016

Too often have I come upon a code base, in a framework that I know, just to be lost in a mess of custom-written code. If you leverage the framework of choice, future developers of the code base will appreciate it, as they only have to learn the framework and not cryptic custom code. Every line of code written outside of the pattern of the framework is another line of code that has to be understood. We’ll take a look at common mistakes and their resolutions.

Reinventing the Wheel

For most of the matured PHP Frameworks (Laravel, Yii, etc.), you get a fully functional MVC (Model View Controller) style framework out of the box. This means that basic actions like getting request data (GET/POST) can be handled through your framework. There is rarely a need to directly use $_GET or $_POST, as frameworks will have their own methods that provide additional levels of security and cleansing, rather than relying directly on these variables.

Helpers are for Helping

Laravel and Yii 2 both have extensive documentation regarding helpers for actions that revolve around URL generation, string modification, and array tweaks. If you are trying to find text at the beginning of a string, and hacking around using substr function, chances are you can leverage either starts_with (Laravel) or startsWith (Yii2) instead of having the alternative; complicated substr and strpos logic within your code base.

At some point in a project, you will have to deal with arrays and modify them. Whether this is recursive sorting, re-indexing, or even plucking certain values, the logic proof code for these actions can quickly balloon into large blocks of code. Frameworks have community tested functions to do most of these actions, you just have to find them and use them.

A common task for me is to re-index an array based on a value inside each child record. This ends up looking something like this:

$return = [];
foreach ($data as $item) {
    $return[$item['key']] = $item;
}
return $return;

These few lines can be replaced with Yii’s Array Helper, like:

return ArrayHelper::index($data, 'key');

Which helps explain the purpose of what I’m doing and removes 4 lines of code.

ORM & Database

I recently reviewed a block of code that wrote a simple query for finding the profile of a user. While the logic was right, this function duplicated existing functionality and added about twenty lines to the project. This specific example could be resolved by leveraging the relations of the User model, like $user->profile. This clean-looking call relied on the magic functions of the model class and the relation/foreign-key setup ahead of time. Both Laravel and Yii2 help you accomplish this, so you can simply call a relation (one or many) via $model->relation, instead of reverting to writing queries to accomplish such a task.

Conclusion

As you work in a framework more, you will naturally pick up its helping functions and shortcuts to basic actions. For those new to a project or framework, it doesn’t hurt to spend a few minutes searching the official guide of that framework. If you can find framework functions that duplicate the functionality you require, this will help to keep your project small and easier to read for future developers.

 

 

RECENT POSTS

The Agile Manifesto in Practice: Part 1

The Agile Manifesto in Practice: Part 1

  How Sourcetoad Values People Over Process The software development process can involve a lot of uncertainty for both development teams and clients alike, especially in the early phases of a project. How can the long-term vision of an application be balanced...

What to Consider When Building HIPAA-Compliant Software

What to Consider When Building HIPAA-Compliant Software

In 1999, the Department of Health and Human Services (HHS) passed the Health Insurance Portability and Accountability Act (HIPAA) as a measure to protect personal health information (PHI) and allow people control of their healthcare records. The HITECH Act was enacted...

The Evolution of Buy Now, Pay Later in eCommerce: Part 2

The Evolution of Buy Now, Pay Later in eCommerce: Part 2

In Part 1, we talked about the rapid growth of Buy Now, Pay Later (BNPL) and discussed its expansion across industries. In Part 2, we will consider how impending regulation may shake up the short-term lending space.   Impending Regulation of BNPL While consumers...