function render(array $data, bool $flag)
{
    if ($flag) {
        // Premier comportement.
    } else {
        // Second comportement.
    }
}
// Code appelant
$data = getData();
$flag = getFlag();
render($data, $flag);
function firstRender(array $data)
{
    // Premier comportement.
}
function secondRender(array $data)
{
    // Second comportement.
}
// Code appelant
$data = getData();
$flag = getFlag();
if ($flag) {
    firstRender($data);
} else {
    secondRender($data);
}
class Renderer
{
    public function render(object $object)
    {
        $flag = $object->getFlag();
        // Suite des différentes conditions.
    }
}
class Renderer
{
    protected bool $flag;
    function setFlag(bool $flag)
    {
        $this->flag = $flag;
    }
    function getFlag()
    {
        return $this->flag;
    }
    function render(object $object)
    {
        $flag = $this->getFlag();
        // Suite des différentes conditions.
    }
}
// Code appelant
$rendererFactory = new RendererFactory();
$renderer = $rendererFactory->create($flag);
$renderer->render($data);
🧙♂️️Si la fonction existe déjà, il peut être long de tout refaire, il faut à ce moment là prendre un peu de temps de réflexion quant à l'intérêt de tout refaire pour un gain immédiat souvent faible.
Privilégier donc la réfacto des morceaux de code importants (à vous de définir cette importance en fonction du contexte).
🧙♂️️Cette solution n'est évidemment pas conseillée.
<?php
class Flag
{
    protected bool $value;
    public function __construct(bool $value)
    {
        $this->value = $value;
    }
    public function isFalse(): bool
    {
        return !$this->isTrue();
    }
    public function isTrue(): bool
    {
        return true === $value;
    }
}
// Code appelant
$data = getData();
$flag = new Flag(true);
render($data, $flag);
<?php
namespace App\Core;
/**
 * Class LoopSwitch
 */
class LoopSwitch
{
    protected const FIRST_STEP = 'first_step';
    protected const SECOND_STEP = 'second_step';
    /**
     * @var string[]
     */
    protected array $steps = [
        self::FIRST_STEP,
        self::SECOND_STEP,
    ];
    /**
     * Executes All the steps.
     */
    public function executeAllSteps()
    {
        foreach($this->steps as $step) {
            $this->executeStep($step) ;
        }
    }
    /**
     * @param string $step
     */
    public function executeStep(string $step)
    {
        switch ($step) {
            case self::FIRST_STEP:
                echo self::FIRST_STEP;
                break;
            case self::SECOND_STEP:
                echo self::SECOND_STEP;
                break;
        }
    }
}