A quanto pare sembra che i metodi magici funzionino a prescindere dal fatto che __set sia dichiarato esplicitamente.
result print_r : test Object ( [tmp] => ciao [tmp2] => mondo )Codice PHP:<?php
class test
{
public $tmp = "ciao";
function __construct(){
$this->tmp2 = "mondo";
}
}
$test = new test();
print_r($test);
?>

Rispondi quotando
quella li è semplicemente la classe che se non dichiari la proprietà ma la inizializzi nel costruttore, la crea come pubblica di default.. i __set e __get si usano diversamente 
