Je crois que je vais utiliser les getters setters en méthodes. Si ... j'ai bien compris, je ne suis pas vraiment novice en programmation, mais assez en programmation de groupe et conventionnelle. Ma méthode (ma ?) répond à toutes mes attentes, sauf à celle du contrôle de données. Et là, c'est finalement très embetant. En plus, elle se base d'un point de vue typage, à une valeur antérieure, ce n'est pas le top.
Au final, je pense que le setter devrait ressembler à ça
public function setBlocksWidth ($value) {
if (!is_int($value)) throw new ...
if ($value < 0) throw new ...
$this->blockWidth = $value;
}
On pourrait pousser plus loin, par exemple si on crée une classe d'envoi d'email.
ClassMail.setMailTo ("
[email protected]"); // Coté utilisateur
ClassMail.setMailTo ("machin"); // Coté utilisateur
ClassMail.setMailTo (2); // Coté utilisateur
class (...)
public function setMailTo ($value) {
if (!is_string($value)) throw ...
if (!preg_match("/(mail)/",$value)) throw ...
$this->mailTo = $value;
}
et imaginer pour une programmation avancée un simple
public function setMailTo (Mail $value) {
// Mail is class Mail comme le type Url pour AS3, on peut écrire aussi : if (!$value instanceof Mail) throw ...
$this->mailTo = $value;
}
On sera alors certain (non ?) lors de l'envoi d'email que $mailTo sera correct ... après avoir vérifié qu'il a bien une valeur
Cela me permettra ainsi aussi de vérifier que la valeur donnée correspont bien à une liste de constante de class comme BLOCKS_FULL, BLOCKS_BORDER, etc
Une critique ?
PS : Je n'aime pas trop C# pour son côté Microsoft, mais il faut bien lui accorder que les getters et setters en tant que propriété et non pas méthodes, c'est quand même top ... et les indexeurs aussi (JAVA fait aussi je crois)

Je crois que je vais utiliser les getters setters en méthodes. Si ... j'ai bien compris, je ne suis pas vraiment novice en programmation, mais assez en programmation de groupe et conventionnelle. Ma méthode (ma ?) répond à toutes mes attentes, sauf à celle du contrôle de données. Et là, c'est finalement très embetant. En plus, elle se base d'un point de vue typage, à une valeur antérieure, ce n'est pas le top.
Au final, je pense que le setter devrait ressembler à ça
public function setBlocksWidth ($value) {
if (!is_int($value)) throw new ...
if ($value < 0) throw new ...
$this->blockWidth = $value;
}
On pourrait pousser plus loin, par exemple si on crée une classe d'envoi d'email.
ClassMail.setMailTo ("
[email protected]"); // Coté utilisateur
ClassMail.setMailTo ("machin"); // Coté utilisateur
ClassMail.setMailTo (2); // Coté utilisateur
class (...)
public function setMailTo ($value) {
if (!is_string($value)) throw ...
if (!preg_match("/(mail)/",$value)) throw ...
$this->mailTo = $value;
}
et imaginer pour une programmation avancée un simple
public function setMailTo (Mail $value) {
// Mail is class Mail comme le type Url pour AS3, on peut écrire aussi : if (!$value instanceof Mail) throw ...
$this->mailTo = $value;
}
On sera alors certain (non ?) lors de l'envoi d'email que $mailTo sera correct ... après avoir vérifié qu'il a bien une valeur ;)
Cela me permettra ainsi aussi de vérifier que la valeur donnée correspont bien à une liste de constante de class comme BLOCKS_FULL, BLOCKS_BORDER, etc
Une critique ?
PS : Je n'aime pas trop C# pour son côté Microsoft, mais il faut bien lui accorder que les getters et setters en tant que propriété et non pas méthodes, c'est quand même top ... et les indexeurs aussi (JAVA fait aussi je crois) ;)