Hi

On 11/20/25 22:59, Larry Garfield wrote:
https://wiki.php.net/rfc/partial_function_application_v2

As part of my work on the PFA-for-$this RFC I noticed one thing that is left undefined in the RFC text and AFAICT not currently tested with the implementation PR, but appears to “just work” is late-static binding with `static::`:

    <?php

    class P {
        public static function m(string $a): void {
            echo __METHOD__, PHP_EOL;
            var_dump($a);
        }

        public static function get() {
            return static::m(?);
        }
    }

    class C extends P {
        public static function m(string|array $b): void {
            echo __METHOD__, PHP_EOL;
            var_dump($b);
        }
    }

    P::get()(a: 'a');
    C::get()(b: []);

This correctly results in:

    P::m
    string(1) "a"
    C::m
    array(0) {
    }

being output.

Can you please make sure to include this as an Erratum within the RFC text (and also make sure it gets a proper test in the PR, including all possible OPcache variations)?

Best regards
Tim Düsterhus

Reply via email to