Chapter 11. Type Hints

The most polarizing—and exciting—new feature added in PHP 7.0 is without a doubt the addition of scalar type hints. There have been many RFCs for different variations of this feature over the years, and finally, with PHP 7, we have an RFC that has passed—albeit after numerous revisions and authors. Unfortunately, this issue was so contentious that it even spilled out of the mailing lists into public social networks before the current implementation was accepted.

Scalar type hints aren’t the only new feature related to type hints, however. As you will see in this chapter, we also have return types, strict types, and more.

Scalar Type Hints

Alongside the introduction of a robust object model in PHP 5.0, we also got the first type hints: class/interface hints. The ability to require a function/method parameter was an instanceof a given class or interface.

PHP 5.1 introduced the array type hint, while PHP 5.4 added callable—the ability to type hint on anything that was a valid callback (e.g., closures, function names, etc.).

PHP 7.0 adds the ability to hint on scalar types:

  • bool: Boolean values (i.e., true/false)

  • float: Floating point numbers (e.g., 4.35)

  • int: Integer numbers (e.g., 123)

  • string: Strings (e.g., foo)

Example 11-1 shows each of these new hints in use.

Example 11-1. Scalar type hinting a function
function hinted(bool $a, float $b, int $c, string $c)
{

}

hinted(true, 4.35, 123, "foo");

Coercive Types

By default, PHP 7.0 will use coercive ...

Get Upgrading to PHP 7 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.