Зачем делают так много методов в классе?

Всем привет! Объясните плз, зачем в классах делают такие методы?

class Person {
    private $name;

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

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

    public function getTitle() {
        return $this->getName()." the person";
    }

    public function sayHello() {
        echo "Hello, I'm ".$this->getTitle()."<br/>";
    }
}

$geekObj = new Person("Ludwig");
$geekObj->sayHello();


выходит мы вызываем метод getTitle() -> getName(), который в итоге выводит всего-то переменную $name.
Почему бы просто не обратиться к ней уже в методе sayHello() ?
  • Вопрос задан
  • 603 просмотра
Решения вопроса 3
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Потому что в будущем вы сможете безболезненно добавить логику в метод (получение значения из конфига, из базы, вызов проверки авторизации и т.п., для сеттера - валидация данных). Если же у вас будет голое поле, то придется изменять клиентский код, а это нарушает абстракцию.

Правило хорошего тона: API класса должен быть доступен только через методы или properties (что, по сути - синтаксический сахар над методами), а поля должны быть только private/protected.
Ответ написан
@Quieteroks
php программист
Это называется инкапсуляция. Почитайте, Вам понравится. Да и вообще все принципы ООП.
В ООП не используют большие методы. Большие методы дробят на мелкие, выполняющие больше полезных действий. А много методов, которые Вы указали, скорее всего часто встречаются их вызовы, так сказать вынос дублирующего кода в модель. В тоже время обращение к методу получения имени гарантирует, совместимость кода. Завтра Вы будете хранить не имя, а ссылка на языковой файл, а через getName отдавать содержимое поля в языковом файле.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Эти методы называются геттеры, к этому есть и сеттеры.
Почитайте для чего они нужны. Это популярные решения для ООП.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы