Должен ли я беспокоиться о геттеров и сеттеров в PHP? - PullRequest
6 голосов
/ 10 декабря 2010

Я делаю новый класс в PHP. Я не ожидаю расширения этого класса. Стоит ли беспокоиться о том, чтобы сделать членов класса приватными и реализовать функции получения и установки?

Часть меня думает, что это просто большая трата времени и служит только для увеличения моего кода.

Класс для резюме. Я пишу это в коде, чтобы продемонстрировать мой стиль кодирования. Вопрос в том, захочет ли работодатель видеть добытчиков и сеттеров, или это просто загромождает вещи?

Ответы [ 9 ]

6 голосов
/ 10 декабря 2010

Я не хочу еще раз повторять аргумент о том, что даже если вы не ожидаете наследования сейчас, оно все еще может понадобиться в будущем, но у них все еще больше причин использовать геттеры и сеттеры:

  • Получатели и установщики позволят вам легко осуществить проверку ваших свойств
  • Ваш код будет следовать хорошим правилам кодирования, и поэтому его будет легче читать другим. Если бы я столкнулся с файлом кода, в котором не использовались методы получения и установки, я бы очень скептически отнесся к этому, и мне пришлось бы много раз внимательно его читать.
  • Кроме того, это решение не только для каждого класса, но и для всего вашего проекта. Вы хотите иметь геттеры и сеттеры для некоторых классов, которые вам нужны, а не для некоторых других? Я считаю, что последовательность важна.
  • Существуют инструменты, которые могут автоматически сгенерировать написание геттеров и сеттеров для вас. Помните, что вы пишете код только один раз, но читаете его много раз,
4 голосов
/ 10 декабря 2010

Проверьте магические методы __get и __set, он сохранит ваш код в чистоте, и вам не придется лениться, если вы не установите переменную scopel., но это подойдет вашим аксессуарам.

3 голосов
/ 10 декабря 2010

Возможно, вы никогда не узнаете, что вам не нужно будет расширять класс в будущем.Что будет делать класс?Насколько это сложно?

Инкапсуляция является частью хорошего дизайна ОО.Но хороший ОО дизайн не является целью программирования.Цель состоит в том, чтобы все работало и было легко изменять их при необходимости.

2 голосов
/ 11 декабря 2010

Если это резюме, скорее всего, они заботятся о вашей логике так же (или более), как и мелкие детали, такие как геттеры / сеттеры.

Если бы это был я, я бы обнародовал их без геттеров / сеттеров, но добавил бы над ними комментарий, в котором говорилось бы что-то вроде:приложение и предпочтительный стиль кода команды "

Таким образом:

  1. Ваш код резюме не загроможден

  2. Они понимают, что вы не просто ленивый и все обнародуете без всякой причины

  3. Это показывает, что вместо слепого следования определенному стилю вы должны учитывать конкретное приложение при принятии решения.
2 голосов
/ 10 декабря 2010

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

2 голосов
/ 10 декабря 2010

Насколько я понимаю, вы можете просто переопределить __get & __set.http://php.net/manual/en/language.oop5.overloading.php

2 голосов
/ 10 декабря 2010

Я бы не стал беспокоиться о тебе.Ты прав, это украшение просто захламит твой класс.

1 голос
/ 10 декабря 2010

Хотите сделать что-нибудь особенное на съемочной площадке или получить (или только один из них приватный)?

Если нет, то не тратьте на это свое время.

Вы ничего не получите от этого, если не используете их «особым образом», и, возможно, это даже все замедляет

0 голосов
/ 10 декабря 2010

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

Если вам необходимо иметь определенное поведение при доступе или изменении этого свойства позже, вы можетевсегда перегружайте метод __set и __get.

См .: http://php.net/manual/en/language.oop5.overloading.php

...