On Sun, Jan 20, 2013 at 10:31 AM, Clint Priest <[email protected]> wrote:
>
> On 1/20/2013 7:35 AM, Sherif Ramadan wrote:
>
> Now $surface shows us the following from var_dump....
>
> object(surface)#1 (3) {
> ["area"]=>
> NULL
> ["width"]=>
> int(4)
> ["height"]=>
> int(2)
> }
>
> Sounds like a reasonable approach to me... var_dump()
>
> 1) Should not invoke the getters..
>
I can agree this since the side effects could be unpredictable (as in the
case of an accessor implementing an actual method rather than dealing with
with any values -- the performance loss is unjustified)
> 2) Should indicate that they are property accessors (perhaps not even show
> the underlying guarded property?)
>
That is a sensible approach to me.
>
> Possibly:
>
> object(surface)#1 (3) {
> ["area":accessor]=>
> NULL
> ["width":accessor]=>
> int(4)
> ["height":accessor]=>
> int(2)
> }
>
> This could easily be changed if nobody had any further disagreements with
> this?
>
> Only issue I could see would be existing code that may parse var_dump()
> might break if it wasn't written to accept something other that
> private/protected...
>
I think that one should rely on serialize or json_* serialization methods
or parsing data structures as opposed to var_dump output, since var_dump
doesn't always provide parseable output. Look at the output of DateTime
objects from var_dump or DateInterval objects, which have changed a bit
over 5.2 -> 5.3 and other objects like DOMDocument, which at one point did
not have any meaningful var_dump output at all.
>
>
> --
> -Clint
>