Re: PHP header files, restrict to declaring code only
| From: | Nikita Popov | Date: | Fri, 10 May 2019 12:37:04 +0000 |
| Subject: | Re: PHP header files, restrict to declaring code only | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-105661@lists.php.net to get a copy of this message | ||
On Fri, May 10, 2019 at 2:30 PM Lynn <kjarli@gmail.com> wrote:
> Hello everyone!
>
> This is my first mail to the internals, my apologies if I made a mistake
> somewhere.
>
> I would like to propose a new type of php "file" called "phph", short for
> "php-header".
> This file could receive an optional open-tag:
<?phph or
> perhaps a
> declare(header=1),
> not sure what's more feasible, or if there are better solutions. This open
> tag could be
> optional for forward compatibility towards omitting the tag.
>
> Php-header files would be allowed to only contain declaring code. This
> means that any code
> that would run "while loading", would not be allowed and cause a syntax
> error in the same
> fashion as trying to add a function call in the middle of a class
> declaration.
>
> ```php
> <?php
> // forward compatible? change default in a major version?
> // any other ideas?
> declare(header=1);
>
> // syntax errors:
> echo 'foo';
> $a = 'b';
>
> // valid
> class Foo {}
> interface Bar {}
> function baz() {}
> // etc
> ```
>
> By restricting it to declaration only, it would make it possible to add
> extra features to
> classes, such as annotations as there are a lot less edge cases to think
> about:
>
> ```php
> <?php
> @trigger_error('Foo is deprecated as of 2.0, use Bar instead',
> E_USER_DEPRECATED);
> class Foo {}
> ```
>
> New scenario could be:
> ```php
> <?php
> declare(header=1);
>
> use Php\Debugging\Annotations\Deprecated;
>
> @Deprecated('Foo is deprecated as of 2.0, use Bar instead');
> class Foo {}
> ```
>
> This is a pretty rough sketch, and I'm not exactly sure if this is doable.
> I'm really eager
> to have native support for annotations and perhaps this idea could inspire
> someone with a
> solution to make this feasible.
>
> Regards,
> Lynn van der Berg
>
Hi Lynn,
I'm not sure I understood what the benefit of introducing a header file
concept will be. Could you elaborate more on how this will help annotations
(or other functionality)?
Nikita