Страница 469 из 813 Как показывает предыдущий пример, значение свойства name может быть любым, включая объект, массив целых чисел, дескриптор файла и др., однако во время установки свойства name невозможно выполнить какую-либо проверку данных или обновить другие значения. Чтобы обойти эту проблему, рекомендуется реализовывать свойства в форме функций get[имя_Свойства] и set[имя_Свойства] , как показано ниже в разделе "Практика". Практика Доступ к свойствам посредством методов get и set Внесите в файл class.Demo.php выделенные изменения:< ?php class Demo { private $_name; public function sayHello() { print "Hello {$this->getName()}!"; } public function getName() { return $this->_name; } public function setName($name) { if(!is_string($name) || strlen($name) == 0) { throw new Exception("Недопустимое имя"); } $this->_name = $name; } } ?> Отредактируйте файл testdemo.php как показано ниже:<?php require_once('class.Demo.php'); $objDemo = new Demo(); $objDemo->setName('Steve'); $objDemo->sayHello(); $objDemo->setName(37); //генерирует ошибку ?> Как это работает Уровень доступа к свойству name изменился с public на private и в начале имени переменной появился символ подчеркивания. Рекомендуется использовать символ подчеркивания для обозначения частных переменных и функций экземпляра. Вместе с тем это лишь соглашение и PHP этого не требует. Ключевое слово private не по
|