18 june 2021 at 17:35, Dmitry Eliseev <elisd...@gmail.com>:
>
> Hello! When I use a static anonymous function as an HTTP-action in some 
> frameworks like:
>
> $app = new App();
> $app->get('/', static function () {
>    return new Response('Hello!);
> })
>
> I get a warning "Cannot bind an instance to a static closure" in every 
> $closure->bind($container) call inside of the framework.
>
> But right now I cannot prevent this warning because there is no native way to 
> check that closure is static before calling the bind method. I can only 
> suppress the warning with @ or set/restore_error_handler pair.
>
> So I propose to add a method like Closure::isStatic for ability of manual 
> checking it before bind call:
>
> if (!$closure->isStatic()) {
>    $closure->bind($object);
> }
>
> The method can contain simple statement:
>
> return func->common.fn_flags & ZEND_ACC_STATIC;
>
> It will be helpful if somebody needs to support dynamic and static callables 
> both without warnings.

I sent Pull Request https://github.com/php/php-src/pull/7193 with a
simple implementation.

P.S. Sorry for PR without RFC, but I have not got any reply to my proposal yet.

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

Reply via email to