Christian Seiler wrote:
> Hi Greg,
> 
>> I can do it if someone can answer this question: how do closures
>> uniquely identify themselves?  spl_autoload_register is mistakenly
>> treating all closures as if they were a single copy of the static method
>> "Closure::__invoke", and so only the first registered closure is ever
>> called (plus it leaks the other closures at shutdown).  If the system
>> can be made to better identify the closure, then spl_autoload_register
>> can use that (and also properly free the refcount on a dupe).
> 
> A closure can only be uniquely identified by the object storage id the
> object has. You cannot assume any identity with regard to, for example,
> file name and line where it was defined, since one could imagine the
> following:
> 
> foreach ($dirs as $dir) {
>   spl_autoload_register (function ($class) use ($dir) {
>      include $dir.'/'.$class.'.php';
>   });
> }
> 
> (or something like it)
> 
> If nobody else does it I'll fix this later today.

Hi,

Thanks Christian, I've got a patch and a test I'm about to commit, would
be great if you can review it.

Thanks,
Greg

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

Reply via email to