DevChunks

How to use PHP Type Declarations

PHP has developed into a more strictly typed language in recent years.

Type Declarations help with that and are a fairly new addition to PHP, with recent releases improving them further. They give you more precise, concise code, clarity, validation, type-hinting and more.

But first… what are Type Declarations? Take a look at this example:

function printMonkeysName(string $monkeysName) {
  echo $monkeysName;
}

printMonkeysName('Harold'); // Prints 'Harold'
printMoneysName(1010111); // Fatal Error

This function has specified the type it expects for the first parameter. This is a Type Declaration and gives you the following benefits:

  • More likely to catch type mismatch errors during coding
  • Enables easier and more automated testing
  • Your IDE will show you what the function expects (i.e. Type Hinting)
  • Your IDE will highlight type mismatch errors
  • Smaller PHP DocBlocks for less cluttered code (i.e. no need to specify types in comments)

We can take this example further and specify what the function will return:

function getMonkeysAge(array $monkey) : int {
  return $monkey['age'];
}

$myMonkey = [
  'name' => 'Benjamin',
  'age' =>,
];

echo getMonkeysAge($myMonkey); // Returns 7

In this example, we specified that the return value of the function is always going to be an integer. This helps to reduce DocBlock comments further and gives your IDE more helpful information.

Now, let’s go a step further and introduce multiple types and custom classes:

// Custom classes defined elsewhere
use App\Monkey;
use App\Tiger;

function describeAnimal(Monkey|Tiger $animal) : void {
  echo $animal->getName().' is a '.$animal->getType().' and is '.$animal->getAge().' years old.';
}

$myMonkey = new Monkey('Jenny', 3);
$myTiger = new Tiger('Brian', 22);

describeAnimal($myMonkey); // Jenny is a monkey and is 3 years old
describeAnimal($myTiger); // Brian is a tiger and is 22 years old

Hopefully, you can see the power of Type Declarations from this example.

Because we have strictly defined the type in our describeAnimal function, we can confidently rely on the methods getName, getType and getAge being available.

A good IDE will type-hint these methods for you – it will show you what methods and properties are available in your $animal property.

This saves time by catching any errors directly in your code.

Getting into the habit of using Type Declarations in PHP is a great way to clean up your code, reduce errors and increase maintainability for the future.

Share:

Leave a Reply

Your email address will not be published.

More Posts

How to use PHP Type Declarations

PHP has developed into a more strictly typed language in recent years. Type Declarations help with that and are a fairly new addition to PHP,

Iteration

If you have come to JavaScript from a background in Java or C, then you will like the variation on the for loop. It is

Context Object Manipulation

One of the key concepts of JavaScript is the keyword this, which signifies the JavaScript context object. If you write an inner function, you can access

Polymorphic Functions

It is possible to define multiple functions with the same name in JavaScript, and the last one of those that you define will be the