Re: Implementation ideas for adding early warning for mis-use of "parent"?
| From: | Nikita Popov | Date: | Sun, 22 Jul 2018 08:36:28 +0000 |
| Subject: | Re: Implementation ideas for adding early warning for mis-use of "parent"? | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-102947@lists.php.net to get a copy of this message | ||
On Sun, Jul 22, 2018 at 2:05 AM, Levi Morrison <levim@php.net> wrote:
> This code the illustrates the issue; it has no errors or warnings:
>
> ```php
> class A {
> function m(): parent {
> return $this;
> }
> }
> ```
>
> However, if you run the method you will get an error. I want to add a
> light warning such as E_STRICT or E_DEPRECATED at compile time.
>
> Using CG(active_class_entry)->parent will not work at compile time, so
> that strategy is out.
>
> Given that
zend_compile_func_decl is not called directly from
> zend_compile_class_decl it would be difficult to pass the
> parent's
> name in any way other than a compiler global. Is there anything in
> particular I need to do if I add another compiler global? I intend to
> set and unset it in zend_compile_class_decl.
>
> Anyone have a better way to pass around the parent's name at compile time?
>
Please note that for traits and closures it's not possible to determine
this at compile time.
Nikita