On 08.12.2022 at 15:40, Robert Landers wrote:
> On Thu, Dec 8, 2022 at 1:39 PM Thomas Gutbier
> <[email protected]> wrote:
>
>> I think in this example the check for null can be removed.
>> The feature is so much more useful than presented here.
>>
>> (https://www.php.net/releases/8.2/en.php#dnf_types)
>>
>> class Foo {
>> public function bar((A&B)|null $entity) {
>> - if ($entity === null) {
>> - return null;
>> - }
>>
>> return $entity;
>> }
>> }
I think accordingly there should only be a single if-statement in the
PHP < 8.2 code sample.
> I'd also like to point out that this doesn't cause a fatal error, at
> least in the latest RC (I haven't tried the official release yet).
>
> trait Foo
> {
> public const CONSTANT = 1;
>
> public function bar(): int
> {
> return self::CONSTANT; // Fatal error
> }
> }
>
> class Bar
> {
> use Foo;
> }
>
> var_dump(Bar::CONSTANT); // 1
> var_dump((new Bar)->bar()); // 1
Indeed, this example is borked. There is no fatal error at this place
prior to PHP 8.2.0 either; rather, line 5 raises a fatal error ("Traits
cannot have constants").
--
Christoph M. Becker
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php