Submitted by David Valdez on
TL;DR: For PHP Hexadecimals, Decimals and Octals are all Integers, so they must be declared as
While I was working on a patch I had to write the docblock of a function which received a hexadecimal number and I wasn't sure what I was supposed to put in the @type param.
I went to Drupal's API documentation and comments standards page to see which is the best type for this param and I found the following:
Data types can be primitive types (int, string, etc.), complex PHP built-in types (array, object, resource), or PHP classes.
Alright, a hexadecimal number is not a complex PHP built-in type nor a PHP Class so it must be a primitive type, so I went to the PHP documentation page to see which primitives PHP has and I found the following:
- float (floating-point number, aka double)
So there wasn't a specific reference for a Hexadecimal number...
In the end Pieter Frenssen helped me (Thanks!) with this, and he showed me that in PHP, it doesn't matter what the base number is and it can be an octal, hexadecimal or a decimal, for PHP they all are integers (which makes sense but I wanted to be sure) and he shared this small snippet where we can see that PHP sees the numbers as integers and the base doesn't matter:
$ php -a Interactive shell php > var_dump(gettype(0x0f)); string(7) "integer" php > var_dump(0x08 === 8); bool(true)
So if you are writing the documentation of a function in which one of its params is a hexadecimal number you must declare it as Integer.