> -----Original Message----- > From: Johannes Schlüter [mailto:johan...@schlueters.de] > Sent: 13 May 2010 20:47 > To: Jared Williams > Cc: 'Pierre Joye'; 'Stanislav Malyshev'; 'Sara Golemon'; 'PHP > Internals' > Subject: RE: [PHP-DEV] Re: [PHP-CVS] svn: /php/php-src/trunk/ > NEWS ext/json/json.c ext/json/php_json.h ext/json/tests/serialize.phpt > > On Thu, 2010-05-13 at 20:27 +0100, Jared Williams wrote: > > Hi, > > Keep thinking with what is in php.next that interfaces > seem overkill? > > > > Doesn't > > > > trait JSON > > { > > function toJSONString() > > { > > return json_encode(get_object_vars($this)); > > } > > } > > > class A > > { > > use JSON; > > > > public $a = 1; > > protected $b = 2; > > private $c = 3; > > } > > No. The goal is to allow json_encode($foo); to do what makes > sense in the case. You might re-use the implementation by > implementing it using traits, but tha's a different problem > than what this interface solves. > > johannes >
Still not seeing the point of the interface. <?php trait Json { function toJSONString() { return json_encode($this->jsonSerialize()); } protected function jsonSerialize() { return get_object_vars($this); } } class A { use Json; public $a = 1; protected $b = 2; private $c = 3; } class B { use Json; public $a = 1; protected $b = 2; private $c = 3; protected function jsonSerialize() { return array('a' => $this->a, 'd' => 4); } } $a = new A(); echo $a->toJSONString(), "\n"; $b = new B(); echo $b->toJSONString(), "\n"; Jared -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php