Dans le cours sur la POO, on trouve la fonction hydrate()
public function hydrate(array $donnees)
{
if (isset($donnees['id']))
{
$this->setId($donnees['id']);
}
if (isset($donnees['nom']))
{
$this->setNom($donnees['nom']);
}
}
La fonction hydrate() est "fléxibilisée" à l'aide d'une boucle comme ci-dessous :
public function hydrate(array $donnees)
{
foreach ($donnees as $key => $value)
{
$method = 'set'.ucfirst($key);
if (method_exists($this, $method))
{
$this->$method($value);
}
}
}
J'ai compris le principe de l'écriture de cette nouvelle fonction, mais dans cette nouvelle fonction il n'y a plus de isset($donnees['?'])
Je ne comprends pas pourquoi ce isset n'est plus utile.
N'aurait-il pas fallu écrire ?
public function hydrate(array $donnees)
{
foreach($donnees as $key => $value)
{
$method = 'set'.ucfirst($key);
if (method_exists($this, $method))
{
$this->$method($value);
$a=$method($value);
if(isset($a))
{
$this->$method($value);
}
}
}
}
Cela dit, les deux ne sont pas strictement équivalents : isset ne permet pas de set une valeur NULL (premier code) quand cette méthode hydrate (deuxième code), oui.
> il n'appelle QUE les méthodes setX() des index existant
Et qui ne valent pas NULL.
J'imagine que c'est un peu là où voulait en venir l'OP par sa version de la méthode hydrate. A la différence près, que pour avoir une stricte équivalence, ce n'est pas la valeur retournée par le setter qu'il faut comparer à NULL mais $value (plus d'autres erreurs) :
public function hydrate(array $donnees) {
foreach($donnees as $key => $value) {
$method = 'set'.ucfirst($key);
if (!is_null($value) && method_exists($this, $method)) {
$this->$method($value);
}
}
}
De mon point de vue, c'est au setter de gérer la valeur NULL, ce ne devrait pas être à la méthode d'hydratation de faire ce choix [les écarter] donc la version qui vous est donnée (deuxième code) me paraît plus "correcte".
PS : pour rappel, les noms des fonctions/méthodes étant insensibles à la casse en PHP, ucfirst n'est pas utile
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli