Conversion d'un paramètre GET en booléen avec PHP

Publié le 01/09/2023 • Actualisé le 01/09/2023


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment convertir un paramètre GET en booléen avec PHP. Parfois, quand on doit convertir un filtre GET d'un point d'accès d'API, on doit transformer ce paramètre en une variable de type booléen : true ou false. On pourrait utiliser un cast, mais ça peut avoir des résultats inattendus. Par exemple, (bool) "false", retourne true, et pas false. Pour corriger ce problème, on peut utiliser la fonction filter_var avec le drapeau FILTER_VALIDATE_BOOLEAN.


<?php

declare(strict_types=1);

// src/Controller/Snippet/Snippet268Trait.php

namespace App\Controller\Snippet;

use Symfony\Component\HttpFoundation\Request;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet268Trait
{
    public function snippet268(Request $request): void
    {
        $values = [
            // true
            'on',
            'true',
            '1',
            'yes',
            1,
            true,

            // false
            'off',
            'false',
            '0',
            'no',
            'foo',
            [],
            0,
            false,
            null,
        ];

        foreach ($values as $value) {
            var_dump($value);
            var_dump(filter_var($value, FILTER_VALIDATE_BOOL));
            echo PHP_EOL;
        }

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire

  Travaillez avec moi !