01-09-2015, 04:18 PM
Oui, c'est pour cela que si on veut du full immutable, je change de langage (oh, salut XSL et ses variables immutables ! ☺). Sur le même principe: si je veux du 100% East, je change de langage et je passe sur un langage East.
Ou alors, je centralise le East: j'encapsule mes objets dans une classe "East" qui passe les appels de méthodes à son encapsulée ("Decorator") et qui ne return que $this:
Ou alors, je centralise le East: j'encapsule mes objets dans une classe "East" qui passe les appels de méthodes à son encapsulée ("Decorator") et qui ne return que $this:
Code PHP :
<?php
class EastDecorator {
private $decorated;
public function __construct($object) {
$this->decorated = $object;
}
public function __call($name, $arguments) {
call_user_func_array(array($object, $name), $arguments);
return $this;
}
public function __set($name, $value) {
$object->{$name} = $value;
return $this;
}
public function __set($name, $arguments) {
throw new BadMethodCallException("East does not allow getters");
}
}
Voilà, là, on a du East pur, à condition d'utiliser new EastDecorator(/*old new call or object*/) au lieu de "new" tout court.