> -----Original Message-----
> From: Pierre Joye [mailto:pierre....@gmail.com] 
> Sent: 12 May 2010 11:33
> To: Stanislav Malyshev
> Cc: 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
> 
> hi!
> 
> On Wed, May 12, 2010 at 4:25 AM, Stanislav Malyshev 
> <s...@zend.com> wrote:
> > Hi!
> >
> >> Add JSON_Serializable interface
> >> Objects implementing JSON_Serializable will have their 
> >> ->jsonSerialize() method called
> >>
> >> Similar to serialize() and __sleep()
> >
> > Why should we have special mechanism for JSON? I.e., now we 
> have one 
> > for serialize(), separate one for json, then we'd have separate
one 
> > for storing object as XML or YAML, etc. etc. IMHO it's not 
> a very good 
> > design - having separate method for every format of data 
> storage. Why 
> > can't we just use whatever serialize() would see and wrap 
> it in JSON after that?
> 
> Serialize is a different thing but Json seems to be standard 
> enough to justify a __toJson method. In any case, using _ in 
> classes name is a no go, as we decided a while back. We can 
> call JsonSerializable if we keep the interface instead of 
> moving this feature to __toJson (which I prefer).
> 
> Cheers,
> --
> Pierre
> 

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;
}

        $a = new A();
        echo $a->toJSONString(), "\n";

Make better sense? 

Don't have to implement any interfaces, yet I still have freedom to
override it either in a differing trait or in the class.

Jared










-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to