Jump to the navigation menu

PHP types and assertions

Following yesterday's email about input validation, guard clauses and assertion libraries, these can be used to compliment PHP's native types and checking.

For example:

function createJourney(string $from, string $to, int $duration): void {
  var_dump($from, $to, $duration);
}

In this code, each parameter has a type, but there's no validation on the values.

If I run this:

createJourney('', '', -10);

I would get this output:

string(0) ""
string(0) ""
int(-10)

This is probably not what you want.

I expect $to and $from to be not empty and the duration to be greater than zero.

Here's the thing

I can use an assertion library or throw my own Exceptions if the values pass the type checks but aren't what I need.

For example:

function createJourney(string $from, string $to, int $duration): void {
  Assert::stringNotEmpty($from);
  Assert::stringNotEmpty($to);
  Assert::positiveInteger($duration);

  var_dump($from, $to, $duration);
}

Now, if an empty string or negative duration is passed - in my implementation or test code - an Exception will be thrown.

- Oliver

Was this interesting?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an Acquia-certified Drupal Triple Expert with 18 years of experience, an open-source software maintainer and Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.