Het lukt niet altijd om bij sommige variabelen te komen?

<?php
class body
{
  private
    $parts = NULL;
}
$subject = new body();
$subject->parts = array('once', 'twice');
print $subject->parts;
?>
De variabele is toch private? Je kan de variabele alleen in de body class zelf gebruiken, als je de variabele vanuit een andere plaats wil aanpassen of uitlezen zul je setters en getters moeten gebruiken o.i.d.
Moet die variabele dan protected?
Protected betekent dat classes die de huidige class extenden de vars kunnen gebruiken.
Dus om te doen wat jij wilt moet idd de var op public gezet worden.

En voor een array is print_r, niet print.

En als je hem niet op public wilt zetten kan je met getters / setters werken.


<?php
class body
{
  private
    $parts = null;
	
	public function setParts($parts)
	{
		$this->parts = $parts;	
	}
	
	public function getParts()
	{
		return $this->parts;
	}
}
$subject = new body();
$subject->setParts(array('once', 'twice'));
print_r($subject->getParts());
?>
Er zijn 3 soorten visibility:
Public
Je kunt een variabele dan aanroepen vanuit elke andere class, maar dit wordt meestal gezien als bad practice.
Protected
Je kunt de variabele in de class zelf aanroepen en in iedere class die een child class is. Je kunt dus zoiets doen:
<?php
class A extends body
{
public function print()
{
print_r($this->parts);
}
}
$A = new A();
echo $A->print();
?>
Maar dit is in jouw geval niet van toepassing.
Private
Alleen de class zelf kan de variabele aanroepen, meestal gebruik je dit dus in combinatie met setters en getters:
<?php
class body
{
private $parts = NULL;

public function setParts($parts)
{
$this->parts = $parts;
}

public function getParts()
{
return $this->parts;
}
}
$subject = new body();
$subject->setParts(array('once', 'twice'));
print_r($subject->parts);
?>
Ja, public is inderdaad niet de bedoeling...
Desalniettemin zul je deze property op een of andere manier moeten ontsluiten om deze te kunnen raadplegen/wijzigen.
Het is hoogst ongebruikelijk om de private $parts public te maken!

Reageren