¿Por qué es posible establecer un miembro privado en una instancia de objeto, de la misma clase dentro de un objeto?

¿Alguien puede explicar por qué puedo establecer el miembro privado?$bar enTestFoo::getFooInstance()?

TestFoo::getFoo2Instance() Sin embargo, devuelve un error fatal.

Siempre asumí que los miembros privados solo deberían ser accesibles desde la misma instancia de objeto en lugar de la misma clase de objeto.

<?php

class TestFoo  {

    private $bar;

    public static function getFooInstance()
    {
        $instance = new TestFoo();
        $instance->bar = "To bar or not to bar";
        return $instance;
    }

    public static function getFoo2Instance()
    {
        $instance = new TestFoo2();
        $instance->bar = "To bar or not to bar";
        return $instance;
    }

    public function getBar()
    {
        return $this->bar;
    }
}

class TestFoo2 {
    private $bar;
    public function getBar()
    {
        return $this->bar;
    }
}

$testFoo = TestFoo::getFooInstance();
echo $testFoo->getBar();

// returns PHP fatal error
//$testFoo2 = TestFoo::getFoo2Instance();
//echo $testFoo2->getBar();
?>

Respuestas a la pregunta(1)

Su respuesta a la pregunta