Николай, твои рассуждения еще раз подтверждают, что ты так им не понял ни мои слова, ни саму инкапсуляцию (давай на ней сосредоточимся, дабы не распыляться).
Так вот. Ты утверждаешь:
Если есть прямое обращение - то это не приватное свойство. Просто по определению :) Обращение к свойству через функцию - это не прямое обращение, а "обращение через функцию", сорри за тафтологию. Если свойство приватное, то класс
имеет право предоставить доступ к этому свойству через специальный "магический" метод. Имеет право - но не обязан.
И если программер сделал так, что при таком обращении у него там что-то рушится внутри класса... То это не проблемы инкапсуляции, это проблемы кривых рук программера :)
И вообще. С чего ты решил, что ты получаешь доступ к приватному свойству? Ты имеешь доступ к методу, который сам решает, что тебе ответить. Это ТЫ ДУМАЕШЬ, что получил величину этого приватного свойства. Да, чёрт побери, прочитай хотя бы разок хэлп!!! Вот здесь:
http://www.php.net/manual/en/language.oop5....php#object.setСам магический метод
public function __get($name)
{
echo "Getting '$name'\n";
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$trace = debug_backtrace();
trigger_error(
'Undefined property via __get(): ' . $name .
' in ' . $trace[0]['file'] .
' on line ' . $trace[0]['line'],
E_USER_NOTICE);
return null;
}
и вызов этого метода:
$obj = new PropertyTest;
$obj->a = 1;
echo $obj->a . "\n\n";
Вот я вижу тут ответ функции, а ты видишь прямое обращение к свойству... А я вот как ни искал, не нашел прямого обращения к свойству извне класса. Ну нету его!!! Если написано $obj->a, то это ну никак не прямое обращение, несмотря на визуальную схожесть с таковым. Более того - приватного свойства $a у данного класса нет вообще...................
У меня, вообще, очень стойкое ощущение того, что ты всё понимаешь также, как я описываю, а просто "троллишь". Чтобы народ высказывался. И этот вариант меня больше устраивает, чем непонимание тобой основы основ языка :)
PS. И еще раз про это:
Нет, у меня не будет "разрыва шаблона" :) Потому что мой шаблон весьма гибкий. В такой ситуации я пойму сразу же, что тут не прямое обращение к свойству.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)