Да легко.
Вот я разработчик и пишу класс (оставим в покое рукожопство, тут суть важна):
class Example
{
private $a = 1;
function __get($a)
{
return $this->$a;
}
}
Компилирую его и отдаю пользовтелю (ну другому разработчику). Как я должен описать интерфейс?
Я должен предоставить ему доступ к свойству. Но я не могу описать его таким, каким оно объявлено в классе - приватным. Ибо вы сами сказали, приватных свойств снаружи нет. Я должен обозначить, что оно публично. А это противоречит логике.
Да, вы сейчас скажите - ничего страшного, ведь это разные свойства. Одно внутри, другое снаружи. Так оно и есть по сути. Но не по логике.
По логике я, как слабый начинающий прогер, не знаю о виртуальных свойствах и понятия не имею про синтаксический сахар. Я знаю определение инкапсуляции и вижу попытку обратиться к привтному свойству. Это логично, хотя по сути не верно.
Вот о том я и говорю. Я на 100% уверен, что для подавляющего большинства читателей это открытие, что свойства вдруг оказываются разными. Это нигде толком не описано. Наоборот, везде, даже в интерпретаторе, говорится, что идет ПРЯМОЕ обращение к свойству класса.
И это плохо, это не логично и это бестолково. Может с точки зрения реализации языка и верно, я до такого уровня не дорос. Но ЯП разрабатывется для программиста, а значит должен быть предельно логичен.
По логике вещей при обращении к одноименнму с приватным виртуальному свойству должна быть ошибка. Что и есть на самом деле. Какого фига так нелогично её давит магия?
Это не логично и тут меня ни кто не переубедит.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.