2016-11-16 11:57 GMT-02:00 Silvio Marijić <marijic.sil...@gmail.com>: > If we treat those objects as values then this should return true. But then > again there might be some confusion because then two operators are doing > the same thing. Maybe throw an error ? Suggestions ?
I just thinking about "how it will be done"? I imagine that we should store all calling to memory, then I see two problems for this case: 1. High memory consumption: all immutable objects should be stored on memory eternally (or until the script ends). I mean: if I call it a hundred times with differents parameters, I'll have a hundred of used memory, that will avoid any used variables of be GC (once that it should stores it for references). 2. High CPU consumption: every time that I instantiate an immutable class, the engine will loop on each possibilities and check if all parameters match to then return the same object (or then, create a new). Then the major question for it is: should all parameters of an immutable constructor be considered on instantiate? Should I pass the exactly copy (read "reference") of object to the parameter to return the same instance or a "shallow copy"? For both problems above, I guess that a "factory pattern with cache" should works better, once that I could consider the exact value where it requires to be immutable, and I could cache only if it is really required, for instance: class SomeFactory { private static $cache = []; public static function getType(Type $type) { if (!$type->shouldBeCache()) { // Code flexibility... return new self($type); } if (!array_key_exists($type->id, self::$cache) { self::$cache[$type->id] = new self($type); } return self::$cache[$type->id]; } } -- David Rodrigues -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php