No, inside the object all the properties are accesible and don't need a magic method. But if you want to asign your properties throw a function, you only have to do a slighty modification in your code:
class Thing
{
private $data;
public function editData()
{
$this->propertySetter('data', 'edited');
}
function propertySetter($property, $value)
{
if ($property === 'data') {
print 'Data is being edited!';
}
$this->$property = $value;
}
}