Но закрытые свойства, предоставляемые только с помощью __get (), не видны функциям, перечисляющим членов объекта - например, json_encode ().
Я регулярно передаю объекты PHP в Javascript с помощью json_encode (), так как это кажется хорошим способом передачи сложных структур с большим количеством данных, заполняемых из базы данных. Я должен использовать общедоступные свойства в этих объектах, чтобы эти данные заполнялись в Javascript, который их использует, но это означает, что эти свойства должны быть общедоступными (и, следовательно, существует риск того, что другой программист не на той же длине волны (или, возможно, сам после плохой ночи) может изменить их напрямую). Если я сделаю их приватными и использую __get () и __set (), то json_encode () их не увидит.
Не было бы неплохо иметь ключевое слово доступности "только для чтения"?