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);