@galithr

Нужно ли проверять типы свойств/параметров?

Имеется класс, например:
class MyClass {

 private $_flag;

 public function setData($value){
  $this->_flag = $value;
 }

 public function getData(){
  return $this->_flag;
 }
}

т.е. свойство flag задается через геттеры/сеттеры. К примеру я ожидаю что в этом свойстве может храниться только целое число (или другой конкретный тип данных). Но пользователь ведь может в этом случае присвоить свойству все что угодно, хоть объект. Собственно вопрос стоит ли в таких случаях, например в геттере, проверять тип параметра, или оставить все на совести пользователя? вообще как лучше выйти из такой ситуации?

Под пользователям имею ввиду программиста использующего мой класс
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
тут всего скорее под "пользователем", ты имеешь ввиду программиста использующего класс.. тогда, просто укажи тип в сигнатуре метода:
public function setData(int $value){

ну а если это ввод от какого-то пользователя, то его нужно валидировать до попадания в класс

P.S. Оставлять все на совести пользователей не стоит.. Входящие параметры надо ограничивать и валидировать, это упростит использование класса и предотвратит появление неявных ошибок

Например сейчас в WP есть двухгодичный баг, как раз демонстрирующий такие последствия:
https://core.trac.wordpress.org/ticket/29750
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trevoga_su
@trevoga_su
если очень критично - можно приводить к нужному типу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы