A pot-pourri of 8 PHP tips that were published with @exakat account.
strict_types do not apply to #PHP operators, only on to typed structures.
Here, concatenation and interpolation all call __toString(), but not foo().
As you can see, print() and echo() are safe too, while implode() is not.
__invoke() and properties and methods
What does this tricky #PHP code displays?
Method syntax and __invoke()
There are some other cases around instanceof, which are surprising upon first read.
We can use a string in a variable, but not a direct string, a constant nor a ::class.
object is not a type
Such situations always make me smile, yet I am certain several of us will loose time on such a mistake.
PHP keywords and namespaces
I was today’s old when I realized that #PHP keyword are allowed in namespaces name since #PHP 8.0.
This goes to PHP 8.0 Compatibility ruleset.
PHP silent optimisation
PHP optimisation in action : undefined variables are only reported when they are used.
first is omitted : no operation
second is skipped : no need to execute 2nd term
third is reporting a warning.
TIL PHP recycles the previously created stdClass objects. The following code returns Object #1, until it is stored in $b.
TIL (2) : PHP’s stdClass’s constructor omits all its arguments.
When integer overflows
Mathematics have the ‘Ramanujan Summation’, where the sum of all integers is -1/12.
#PHP has the integer overflow. Stay away from the PHP_INT_MAX limits. Valid with (int) or intval() with recent #PHP versions.