How PHP allows to set values without setter methods or constructor

Code
<?php

class Foo
{
    private 
$foo;
    private 
$bar;

    private function 
__construct()
    {
    }
    
    public static function 
createDefault()
    {
        
$foo = new self();
        
$foo->foo 1;
        
$foo->bar 2;
        
        return 
$foo;
    }
}

dump(Foo::createDefault());
Result
Foo {#371
-foo: 1
-bar: 2
}
Used Versions
PHP 7.1, Zend 3.0, Symfony 3.2, Laravel 5.2, PHPUnit 5.6, Doctrine 2.6