On Fri, May 10, 2019 at 2:30 PM Lynn <kja...@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

Reply via email to