«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/04/13 20:39:54  №1380549 1
Решаю список студентов и возникли некоторые вопросы.

1. Будет ли хорошим решением получать объект студента статическим методом из класса-помощника?
Например:
$student = Utils::createStudentFromGlobals();

2. Хорошим ли решением будет хранить введенные студентом данные на стороне сервера, чтобы в случае вывода ошибки при валидации вставлять их в html-атрибут value?

3. Можно ли вызывать встроенные в php функции из логики шаблонов? Да и обычные функции, ведь они могут содержать в себе сложную логику.
Или всё что серьезнее if/else/for/foreach низяяя?

4. Я забрёл слишком далеко и начал тестировать с phpunit валидатор студента, а у меня в нём большинство методов защищенные. Пришлось использовать Reflectionclass для получения доступа к ним, это нормальная практика?

И про валидатор, в нём самые часто используемые конструкции по типу измерения длины строки/проверки на пустоту, я обобщил в отдельные методы. Как вам такое решение?

5. Вопрос по тестированию.

Например у меня есть метод валидации имени студента. Он умеет:

1. Проверять переданное значение на пустоту.
2. Проверять длину на min, max значения и возвращать соответствующие ошибки.
3. Проверять регуляркой на кириллические символы.

В конце возвращает массив с ошибками или null.

Для каждой способности этого метода писать отдельный тест-метод?

Надеюсь, не отнял много времени. Заранее спасибо!
Ответы: >>1380793 >>1383810 >>1394736
Аноним 2019/04/18 23:58:15  №1383810 2
>>1380549
1. Зависит от обстоятельств. Есть такие принципы, как SOLID.
S - единственности ответственности. Грубо говоря каждый класс отвечает за что-то свое. Поставь вопрос - за что отвечает как Utils ? Если ответ не слишком большой - норм.
4. Нет. Скорее всего ты пишешь юнит тесты. В них (да как и почти в любых тестах) ты тестируешь только открытый функционал. Тестировать закрытые функции = себя не уважать.
5. Тестируй по отдельности, тестируй как они работают вместе. Это нормально.
Ответы: >>1383813 >>1385178
Аноним 2019/04/19 00:30:41  №1383813 3
>>1383810
>Есть такие принципы, как SOLID.

Book authors want to sell books
Ответы: >>1383838
Аноним 2019/04/19 03:47:07  №1383838 4
Аноним 2019/04/21 00:37:03  №1385178 5
>>1383864

В этой задаче редактирование предусмотрено на случай ошибок при вводе данных. Так что Васю все же надо оставить.

>>1383966

В некоторых ЖК мониторах минимальная яркость соответствует наибольшей амплитуде мерцаний подсветки.

>>1383810

> Тестировать закрытые функции = себя не уважать.

Дело тут не в уважении, а в том, что приватные функции - это деталь реализации. От класса требуется предоставлять выполнять определенные требования, а как он это делает - его личное дело. И если мы будем в тестах закладывать знание внутреннего устройства класса, то нам их придется переписывать при любых изменениях. А это неудобно.

>>1383734

..., int $tier = 1, ..

Это описано в мануале PHP.

>>1383611

Изучить, как устроено веб-приложение, а не изучить, как настроить фреймворк.