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.

Regards,
Christian

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

Reply via email to