Hi Christian,

thanks again for your (and Dmitry's) great work on making closures a
part of PHP.

Am Donnerstag, den 26.06.2008, 18:23 +0200 schrieb Christian Seiler:
>   * I have *not* added any __invoke() magic to normal objects. This is
>     mainly due to the simple reason that adding that would not help
>     a closure implementation at all. Closures need some engine internal
>     magic (use a dynamically created op_array instead of looking one up,
>     setting the correct class scope and setting the correct EG(this). And
>     as I said: I want to stick with the closure basics for now.

I understand that you want to keep your proposal basic. However I have
the feeling that we need a complete implementation to make closures
really beneficial for our users. I would consider the following features
to be central for a feature complete implementation:

      * Class::__invoke() to allow functors[1]. The class "Closure" in
        your proposal should also implement that method to make
        method_exists() and ext/reflection behave.
      * Change the behaviour how method calls are resolved. Method calls
        on invokable objects (closures or functors) should work.

cu, Lars

[1] http://en.wikipedia.org/wiki/Functor
[2] Example for a closure assigned to a property:
class View();
{
    public $escape;
}

$view = new View();
$view->escape = function($string) {
    return htmlentities($string, ENT_QUOTES, 'UTF-8');
}

echo $view->escape("<script>alert(1)</script>");

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to