Re: [PHP-DEV] 8.1 / Exception / Property Type / Backwards compatbility

2021-08-27 Thread Alexandru Pătrănescu
On Tue, Aug 10, 2021 at 12:55 PM Philip Hofstetter <
phofstet...@sensational.ch> wrote:

> Hello
>
> The following valid <= PHP 8.0 code that intends to make the $line property
> public  is a fatal error in 8.1
>
> class FooException extends Exception {
> public $line;
> }
>
> However, the fixed code for 8.1:
>
> class FooException extends Exception {
> public int $line;
> }
>
> Is a fatal error in <= 8.0
>
> Is there a way to create a class that makes the $line property public
> that’s compatible with all versions of PHP without requiring conditional
> declaration of the class?
>
>
Not sure exactly why you need to $line property public.
If you need to be able to read it, you can use __get.
If you also need to write it, as that also worked, you can also use __set.

So an example that offers the same interface/interaction possible would be:
https://3v4l.org/tHhEL#v8.0.9
https://3v4l.org/tHhEL/rfc#vgit.master

But of course, when you look at the object with reflection, or how var_dump
prints it, the property will still be protected.

Regards,
Alex


[PHP-DEV] 8.1 / Exception / Property Type / Backwards compatbility

2021-08-10 Thread Philip Hofstetter
Hello

The following valid <= PHP 8.0 code that intends to make the $line property
public  is a fatal error in 8.1

class FooException extends Exception {
public $line;
}

However, the fixed code for 8.1:

class FooException extends Exception {
public int $line;
}

Is a fatal error in <= 8.0

Is there a way to create a class that makes the $line property public
that’s compatible with all versions of PHP without requiring conditional
declaration of the class?

For method return types, we have #[ReturnTypeWillChange], but for property
types 路‍♀️

Philip