Терминология php: разница между геттерами и публичными методами? - PullRequest
4 голосов
/ 06 сентября 2010

Мой вопрос больше о терминологии, чем о технических особенностях (или это так?).

В чем разница между методом получения и открытым методом в классе?Они одно и то же или есть различие между ними?

Я спрашиваю, потому что я пытаюсь изучить лучшие практики кодирования, и эта область кажется серой для меня.Я комментировал свой код и заметил, что у меня есть большой раздел под названием «Getters» и еще один большой раздел под названием «Public Methods», а потом я сказал: «Что такое diff ?!»

Спасибо!

Ответы [ 3 ]

5 голосов
/ 06 сентября 2010

Проще говоря, геттер в PHP - это просто метод, который позволяет другим частям вашего кода обращаться к определенному свойству класса .

Например:

<?php

class Person {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    // Getter
    public function getName() {
        return $this->name;
    }
}

$bob = new Person('Bob');
echo $bob->getName(); // Bob

?>

Хотя метод не обязательно должен быть спроектирован так, чтобы просто возвращать свойство;Вы можете создать другие методы, чтобы ваш класс мог делать забавные вещи .

Чтобы расширить приведенный выше пример, давайте дадим классу Person метод с именем say() и дадим емупараметр функции / метода, представляющий, что сказать:

    public function say($what) {
        printf('%s says "%s"', $this->name, $what);
    }

И вызывать его после создания объекта из класса:

$bob = new Person('Bob');
echo $bob->getName(), "\n"; // Bob
$bob->say('Hello!');        // Bob says "Hello!"

Обратите внимание, что внутри say() метода Iобратитесь к $this->name.Это нормально, поскольку свойство $name найдено в том же классе.Цель метода получения (и соответствующего метода установки, если таковой имеется) - разрешить другим частям вашего кода доступ к этому свойству.

1 голос
/ 06 сентября 2010

Методы получения - это открытые методы, которые возвращают значение закрытой переменной.Аналогичным образом, сеттеры являются открытыми методами, которые позволяют модифицировать или «устанавливать» приватную переменную.

0 голосов
/ 06 сентября 2010

Открытые методы могут быть обновлены извне класса, и класс не обязательно должен знать об этом.

Публичный получатель или установщик дает вам большую гибкость - то есть, когда мы пытаемся прочитать $obj->$property, переменная может быть не готова . Однако, если мы используем $obj->getSomething(), мы можем сделать что-нибудь с этой переменной, чтобы подготовить ее,

Разница в том, что публичные геттеры обычно возвращают приватную переменную. Это означает, что единственный способ получить состояние свойства от объекта - это получить его с помощью метода, который может или не может делать дополнительные вещи.

...