Почему нету нотиса?
Если ваш класс (либо его предки) не реализует __set, то возможно добавить любые новые свойства в рантайме - добавлены они будет как public.
Объявление свойства в описании класса на самом деле не требуется языком, но требуется другими разработчиками. И это не просто хороший тон, а именно "так и должно быть".
И как дополнительная плюшка, если все свойства объекта объявлены в описании класса, объекты этого класса будут использовать более эффективное распределение памяти. При попытке создать новое свойство - будет прозрачно смигрировано в более толстую структуру.
Может сеттер есть какой? Вообще весь бы код увидеть :)