Por que é possível definir um membro privado em uma instância de objeto, da mesma classe dentro de um objeto?

Alguém pode explicar por que eu sou capaz de definir o membro privado$bar noTestFoo::getFooInstance()?

TestFoo::getFoo2Instance() no entanto, retorna um erro fatal.

Eu sempre presumi que membros privados só deveriam ser acessíveis a partir da mesma instância de objeto em vez da mesma classe 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();
?>

questionAnswers(1)

yourAnswerToTheQuestion