Задать вопрос

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

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

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() ?
  • Вопрос задан
  • 611 просмотров
Подписаться 2 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 3
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Потому что в будущем вы сможете безболезненно добавить логику в метод (получение значения из конфига, из базы, вызов проверки авторизации и т.п., для сеттера - валидация данных). Если же у вас будет голое поле, то придется изменять клиентский код, а это нарушает абстракцию.

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽