|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #79620 Typed nullable attribute throws Fatal error
Submitted: 2020-05-22 10:08 UTC Modified: 2020-05-22 10:22 UTC
From: jiri dot fajman at designeo dot cz Assigned:
Status: Not a bug Package: *General Issues
PHP Version: 7.4.6 OS: Ubuntu 20.04
Private report: No CVE-ID: None
 [2020-05-22 10:08 UTC] jiri dot fajman at designeo dot cz
PHP 7.4.6

Following code throws "Typed property A::$x must not be accessed before initialization".

Expected behavior:
Method getX() returns null.

I cannot imagine any single usecase for this behavior and I consider it a serious bug leading back to PHP 7.0 hacks for nullable types in method signature.

Note: Omitting getter method is not acceptable since accessing non existing attribute does not throw error.

Test script:

class A {
    private ?string $x;

     * @return string|null
    public function getX(): ?string
        return $this->x;

     * @param string|null $x
    public function setX(?string $x): void
        $this->x = $x;

$a = new A();


Expected result:
Expected result is that var_dump prints null, not crash with fatal error

Actual result:
Fatal error:

Typed property A::$x must not be accessed before initialization


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2020-05-22 10:10 UTC]
-Status: Open +Status: Not a bug
 [2020-05-22 10:10 UTC]
This works as intended. Initialize the variable upon declaration:

private ?string $x = null;
 [2020-05-22 10:18 UTC] jiri dot fajman at designeo dot cz
Thank you for your reply.

Could you please provide an example, where this behaviour without default initialization can be used? I just can't find any. Thank you.
 [2020-05-22 10:22 UTC]
@jiri: Any time you use a constructor which initializes properties.
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Thu Aug 11 18:03:36 2022 UTC