- Affected version
- 2.3.6
PHP:
var_dump(\XF::Options()->changeLogLength);
$option = Helper::find(\XF\Entity\Option::class, 'changeLogLength');
$option->option_value = 0;
var_dump($option->option_value);
Both of these will output a string
type instead of the expected int type. This matters because xf-dev:generate-options-stub CLI command gives strongly typed hints, and phpstorm (and other php code formatting tools) will suggest to unwrap any casts. Except the underlying type is stringy so strict checks (=== / !==) will unexpectedly fail.The solution appears for
\XF\Entity\getOptionValue() and \XF\Entity\getDefaultValue() to call castOptionValue instead of the partial customized version of castOptionValue. Or if castOptionValue is too strict using isDataTypeNumeric before casting to an int
Last edited: