2012-02-29 7 views
2

Мой коллега предпочитает инкапсулировать все функции 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'); 

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

+0

класс занимает больше времени, чтобы начать то одну функцию, но для масштабирования с использованием классов с надлежащим судом и проверенные образцы/классы классов/oop выигрывают над процедурной процедурой, процедурные могут быть легко понятны для ранних разработчиков, но это не так, кстати, его не обмануть инкапсуляцию –

ответ

1

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

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

  • меньше строк кода, чтобы изменить
  • легче испытать против
  • ..
0

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

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

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

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

Смежные вопросы