Skip to content

[VarDumper] Dumper probably shouldn't localize decimal points. #23572

@bobthecow

Description

@bobthecow
Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no
Symfony version >= 3.2.0

This…

use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;

// Ensure locale uses `.` for decimal separator
setlocale(LC_NUMERIC, 'en_US');

$cloner = new VarCloner();
$dumper = new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR);
$dumper->dump($cloner->cloneVar([1, 2.3, 4]));

Works as you'd expect:

[
  1,
  2.3,
  4
]

But this…

use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;

// Switch to a locale with `,` as a decimal separator
setlocale(LC_NUMERIC, 'fr_FR');

$cloner = new VarCloner();
$dumper = new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR);
$dumper->dump($cloner->cloneVar([1, 2.3, 4]));

Gets a little weird:

[
  1,
  2,3,
  4
]

And if you change locales after creating a dumper…

use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;

// Ensure locale uses `.` for decimal separator
setlocale(LC_NUMERIC, 'en_US');

$cloner = new VarCloner();
$dumper = new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR);

// Switch to a locale with `,` as a decimal separator
setlocale(LC_NUMERIC, 'fr_FR');

$dumper->dump($cloner->cloneVar([1, 2.3, 4]));

It gets weirdest of all:

[
  1,
  2,3.0,
  4
]

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions