Использование класса-обертки для скрытия функций - PullRequest
2 голосов
/ 01 марта 2012

Мой коллега предпочитает инкапсулировать все функции PHP за классами. Похоже, он оправдывается тем, что если он в классе, его будет легче изменить, если они когда-нибудь обновят код. После того, как я посмотрел на его код, меня беспокоит то, что я понятия не имею, что может происходить или почему что-то может произойти. Кроме того, если бы он был в форме класса, я бы предпочел статическую функцию тому, что он делает, как мне кажется, было бы лучше.

Например, вместо:

$var = filter_var('0755', FILTER_VALIDATE_INT);

Он бы имел:

class Filter {
     public function filterInt($var) {
           return filter_var($var, FILTER_VALIDATE_INT);
     }
}

$filter = new Filter();
$var = $filter->filterInt('0755');

Каким образом лучше практиковаться? лучше для долгосрочной работы? лучше для понимания?

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Скрытие функциональности в методах - хорошая практика, Code Complete объясняет, почему это так.

Если вы когда-либо захотите изменить filterInt, например, добавьте верхнюю и нижнюю границы, вам будет лучше, если вы его инкапсулировали.

  • меньше строк кода, подлежащих изменению
  • легче проверить против
  • ..
0 голосов
/ 01 марта 2012

Только для одного метода, такого как ваш пример, это не имеет особого смысла.

Это начинает иметь смысл, если вы используете его для группировки всех своих функций фильтрации здесь, вы можете иметь Filter::filterDeliveryAdress, а затем,каждый раз, когда вам нужно что-то отфильтровать, вы можете помнить, что у вас уже есть функция для этого.Поэтому, если ваша функция фильтрации, например, недостаточно точная, вы можете исправить ее в классе, чтобы исправить ее во всем вашем коде.

Конечно, здесь статическая функция будет лучше, ее будет еще проще использовать.

Если, как я думаю, это только для группировки связанных функций и использования PHP> = 5.3, пространство имен будет более подходящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...