Аксессоры и мутаторы - это обычные функции получения и установки в Laravel. Это просто более «элегантный» способ выразить это.
Я мог бы сказать, что функции получения и установки должны дать вам лучший контроль над вашими переменными в вашем классе, но это не сильно поможет понять это. бит.
Так для чего это? Зачем его использовать?
Мы уже знакомы с принципом DRY (не повторяйтесь), который гласит, что дублирование - это logi c, от которого следует избавиться. Или на кухонном языке; не пишите один и тот же код дважды, потому что это отнимает у вас время без всякой причины.
Так как это помогает?
Например, у вас есть класс проверки орфографии, который использует другое приложение на сервере, например hunspell. Для небольших строк вы можете использовать его напрямую, и когда приходит запрос, вы обрабатываете его, вызывая команду с shell_exe c, затем вы получаете результат и возвращаете его - все довольны.
Однако, если текст слишком длинный, то php превысит 30-секундный лимит (по умолчанию), и вы не получите никаких результатов. В этом случае вы можете создать сценарий, который запускается процессом демона, поэтому ограничение в 30 секунд не будет проблемой. Когда поступает запрос, вы передаете текст процессу-демону, например, используя сокет unix, затем фоновый процесс выполняет проверку орфографии за вас и отправляет результат.
В обоих случаях у вас есть для установки определенных переменных для класса проверки орфографии, которые могут нуждаться в проверке или форматировании. И вы не хотите развивать его дважды, потому что это требует времени, наводит беспорядок и увеличивает количество возможных мест, где вы можете что-то испортить.
Бывают случаи, когда их намного больше, чем просто 2 места где вам нужно использовать препараты для установки или получения данных, и даже только в двух местах это может очень помочь избежать дублирования кода. Это также может помочь предотвратить увеличение сложности вашего кода.
Это еще не все!
Иногда вы пишете классы, и бог знает, кто будет их использовать. Может это для пакета publi c. Затем, когда разработчик получает пакет, он не хочет заботиться о том, как будет проверяться электронное письмо. Он не хочет знать, почему \n
должно быть удалено из конца строки для определенных c переменных, когда до того, как он получит переменную из файла. Он не хочет заботиться о реализации части проверки целочисленных значений. Он просто хочет использовать пакет, чтобы выполнить работу как можно скорее.
То, что вы делаете с сеттерами и геттерами, - это не что иное, как защита переменных вашего класса путем управления ими с помощью этих методов.
Иногда вы хотите скрыть свои переменные в своем классе, чтобы другие классы не зависели от них. Это дает вам гибкость при изменении реализации и типа переменной.
Стоит ли всегда их использовать?
Нет. Вызов функций в php выполняется медленно. Просто проверьте, насколько медленнее Laravel по сравнению с собственным кодом PHP. Иногда написание геттеров и сеттеров совершенно бессмысленно и просто пустая трата времени.
Когда мне тогда его использовать?
Используйте его, когда вам нужно ограничить доступ к вашим переменным. Создание геттеров и сеттеров для каждого поля - это излишне. Это действительно зависит от ситуации, поэтому используйте его только там, где это необходимо.
Подробнее об этом c
Getter and Setter?
Зачем нужны геттеры и сеттеры / аксессоры?
https://dev.to/scottshipp/avoid-getters-and-setters-whenever-possible-c8m