Полный цикл в digital

Геттеры и сеттеры

Реализуются с помощью двух методов:

  • getНазвание вызывается, когда клиентский код пытается прочитать private
  • setНазвание вызывается, когда клиентский код пытается присвоить значение private

Есть два способа реализации гетеров и сетеров, для этого можно сделать свои методы которые будут обрабатывать запросы к методам и свойствам с модификаторами private:

<?
class Test
{
    // приватное свойство
    private $name;
    // сеттер вызывается, когда клиентский код должен присвоить значение приватному свойству
    public function setName($name)
    {
        $this->name = $name;
    }
    // геттер вызывается, когда клиентский код пытается прочитать значение приватного свойства
    public function getName()
    {
        echo $this->name;
    }
}
// создаем объект класса
$test = new Test();
// устанавлеваем приватное свойство, включается setName()
$test->setName("Иван");
// запрашиваем приватное свойство через публичный метод, включается getName()
$test->getName();
<?
class Test
{
    // приватное свойство
    private $name;
    // сеттер вызывается, когда клиентский код должен присвоить значение приватному свойству
    public function setName($name)
    {
        $this->nameCorrect($name);
    }
    // геттер вызывается, когда клиентский код пытается прочитать значение приватного свойства
    private function getName()
    {
        echo $this->name;
    }
    // приватный метод, проверки данных
    private function nameCorrect($name)
    {
        // проверка на строку 
        if (is_string($name)) {
            // присвоение данных приватной переменной $name
            $this->name = $name;
            // вывод данных на экран
            $this->getName();
        }
    }
}
// создаем объект класса
$test = new Test();
// устанавлевает приватное свойство, включается setName()
$test->setName("Иван");

Можно воспользоваться магическими методами ООП:

<?
class Test
{
    // приватное свойство
    private $name;
    // вызывается, когда клиентский код пытается присвоить значение неопределенному свойству. При этом передается два аргумента, имя свойства и значение, которое клиентский код пытается присвоить
    function __set($property, $value)
    {
        // проверка, есть ли в классе свойство
        if (property_exists('Test', $property)) {
            $this->name = $value;
        }
    }
    // вызывается, когда клиентский код пытается прочитать необъявленное свойство. Вызов его происходит автоматически с одним строковым аргументом, содержащим имя свойства к которому клиентский код пытался получить доступ
    function __get($name)
    {
        echo $this->name;
    }
}
// создаем объект класса
$test = new Test();
// устанавлеваем private свойство, включается __set
$test->name = "Иван";
// запрашиваем private свойство, включается __get
$test->name;
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг