Just a question that passed into my head - is the magic __set function supposed to return anything? Currently I don't - and the examples I've always seen don't. I throw an exception when the user tries an illegal set.