Re: [RFC] Reflection for references
| From: | Marco Pivetta | Date: | Tue, 15 Jan 2019 11:07:31 +0000 |
| Subject: | Re: [RFC] Reflection for references | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-103742@lists.php.net to get a copy of this message | ||
On Tue, Jan 15, 2019 at 11:57 AM Nikita Popov <nikita.ppv@gmail.com> wrote:
>
> * instead of
$ref1->getId() === $ref2->getId(),
> $ref1->matches($ref2)
>> or such.
>>
> * what are possible scenarios for getting the identifier as a primitive,
>> and then storing it somewhere (like an array of reference identifiers)?
>>
> * There seems to be a lot of design around
> ReflectionReference#getId()
>> to avoid leaking internal pointer information: can it be completely
>> dropped, if we have $ref1->matches($ref2) instead?
>>
>
> As Nicolas already wrote, the ID / Hash functionality is needed to allow
> hashtable lookups. Having just matches() would require iterating over the
> whole set of known references and comparison each and every one. With the
> getId() API, it's just a single HT lookup.
>
> We could add $ref1->equals($ref2) as an *additional* convenience method,
> but it would not replace the getId() API.
>
I'd say that if the indexing is a fairly common scenario (seems like it,
coming from Nicolas, who is the most direct API consumer here), the
->matches() isn't needed at all.
Marco Pivetta
http://twitter.com/Ocramius
http://ocramius.github.com/