Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

(int) And (ant)

<?php

const INT = static function($x) {return  (int)$x * (int)$x;};
echo (int)(" 123s ");
// fatal error
// echo ((int))(" 123s ");

const ant = static function($x) {return  (int)$x * (int)$x;};
echo (ant)(" 123s ");
echo ((ant))(" 123s ");

It is possible to store a Closure in a constant, since PHP 8.5. This means that the closure has to be called by storing the constant in parenthesis: this way, PHP first extracts the value of the constant, then, calls the closure.

There is something else that is between parenthesis: a cast. And cast has a very high priority. So, when a int constant is created, it still calls the cast, and ignores the constant.

May be constants should not be called as casts?

See Also

PHP Error Messages

PHP Features

Last updated: 10 September 2026