note 129445 added to language.oop5.decon
| From: | Tetranecros | Date: | Mon, 29 Apr 2024 12:38:47 +0000 |
| Subject: | note 129445 added to language.oop5.decon | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-221310@lists.php.net to get a copy of this message | ||
Php n'admet pas les constructeurs multiples où un constructeur vide apparaît. Une
solution (non-sécurisé) consisterait à faire appel à la fonction func_num_args() qui
permet de connaître le nombre d'arguments retournés, puis avec un switch-case, de
gérer les états en fonction des arguments.
Deux points importants cependant avec cette méthode :
- Il faut impérativement filtrer ce qui rentre (ne pas oublier les entrées utilisateur).
- On peut créer plusieurs cas de figures et se perdre dans son code.
Exemple :
<?php
class Voiture
{
private int $id;
private string $marque;
function __construct(){
$args_num = func_num_args();
switch ($args_num)
{
case 0:
break;
case 2:
$args_list = func_get_args();
$this->id=$args_list[0];
$this->marque=$args_list[1];
break;
}
}
public function getId()
{
return $this->id;
}
public function getMarque()
{
return $this->marque;
}
public function setId($i)
{
$this->id = $i;
}
public function setMarque($m)
{
$this->marque = $m;
}
}
?>
----
Server IP: 45.112.84.4
Probable Submitter: 80.90.13.131 (proxied: 195.83.235.234)
----
Manual Page -- https://php.net/manual/en/language.oop5.decon.php
Edit -- https://main.php.net/note/edit/129445
Del: integrated -- https://main.php.net/note/delete/129445/integrated
Del: useless -- https://main.php.net/note/delete/129445/useless
Del: bad code -- https://main.php.net/note/delete/129445/bad+code
Del: spam -- https://main.php.net/note/delete/129445/spam
Del: non-english -- https://main.php.net/note/delete/129445/non-english
Del: in docs -- https://main.php.net/note/delete/129445/in+docs
Del: other reasons-- https://main.php.net/note/delete/129445
Reject -- https://main.php.net/note/reject/129445
Search -- https://main.php.net/manage/user-notes.php