Классическое ООП не рекомендует использование публичных полей. Рекомендуется доступ к данным организовывать через геттеры и сеттеры (это не РНР шные __get & __set, а методы обертки getName(), setName()...).
Можно публичные поля использовать там, где не требуется проверка данных, где используются простые объекты данных. Мы же используем хешмассивы[ $ob = array(); $ob[id]=1;… ] как структуру данных. Можно и даже правильнее вместо них использовать объекты: $ob = new StdClass(); $ob->id = 1; $ob->name=… У нас, в этом случае все поля получаются публичными.
Не целесообразно в данном случае писать специальный класс, и на каждое поле свой геттер и сеттер, если функция данного объекта — это лишь только хранение/передача информации.