«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 04:43:15  №1383193 2
Зачем оп с списке студентов советует создать константу пола (const GENDER_MALE) в модели студента, если мы и так в конструктор будем пол передавать и записывать его в обычное поле, как и все остальное?
Ответы: >>1383195 >>1383545 >>1385179
Аноним 2019/04/18 04:47:47  №1383195 3
>>1383193
Шоб везде писать

$vasya->setGender(User::GENDER_MALE);

if ($vasia->getGender() === User::GENDER_MALE) {
...
}
Ответы: >>1383372 >>1383545
Аноним 2019/04/18 09:54:49  №1383372 4
>>1383195
>$vasya->setGender
не скрепно как-то
вася должен быть сразу создан с правильным гендером безо всяких сеттеров
Ответы: >>1383408 >>1383858
Аноним 2019/04/18 15:30:55  №1383545 5
>>1383193
>>1383195
Не читал ваш срач, но вам нужен https://github.com/myclabs/php-enum

Использую это говно во всех проектах, зависимость есть, брат жив.
Охуенная штука. Позволяет тайпхинтить енумы.
Ответы: >>1383546 >>1383602
Аноним 2019/04/18 16:50:49  №1383602 6
>>1383545
Список студентов я хочу без всего со стороны написать, а так спасибо.
Ответы: >>1383611
Аноним 2019/04/18 17:00:41  №1383611 7
>>1383602
>без всего со стороны написать
В чем сакральный смысол данной идеи?
Ответы: >>1383631 >>1385178
Аноним 2019/04/18 19:21:34  №1383734 8
Аноны, подскажите можно ли делать так:
\tfunction __construct(int $countOfPerson,int $tier,int $leader){
\t\t$this->countOfPerson = $countOfPerson;
\t\t$this->tier =(!isset($tier))?0:$tier;
\t\t$this->leader =(!isset($leader))?0:1;
\t}
В конструкторе есть переменная $tier и $leader. Могу ли я сделать их необязательными?
Ответы: >>1383743 >>1385178
Аноним 2019/04/18 23:58:15  №1383810 9
>>1380549
1. Зависит от обстоятельств. Есть такие принципы, как SOLID.
S - единственности ответственности. Грубо говоря каждый класс отвечает за что-то свое. Поставь вопрос - за что отвечает как Utils ? Если ответ не слишком большой - норм.
4. Нет. Скорее всего ты пишешь юнит тесты. В них (да как и почти в любых тестах) ты тестируешь только открытый функционал. Тестировать закрытые функции = себя не уважать.
5. Тестируй по отдельности, тестируй как они работают вместе. Это нормально.
Ответы: >>1383813 >>1385178
Аноним 2019/04/19 06:13:31  №1383858 10
>>1383372

А если над персистентным Васей совершают операцию по смене пола?
Ответы: >>1383864
Аноним 2019/04/19 06:21:55  №1383864 11
>>1383858
Тогда удаляем объект Вася из нашего консервативного ООП.
Ответы: >>1385178
Аноним 2019/04/19 09:03:17  №1383949 12
Привет треду и Опу.

Сидел с вами с 16 по 17 год, успел сделать список студентов, MVC сапера на JS и половину файлообменника. К несчастью, у меня начались проблемы с глазами – нечто похожее на синдром "сухого глаза". Работать с пекой стало сложно, особенно с текстом, глаза устают минут за 10, пришлось завязать с программированием. Капли, очки, и лазерная коррекция не помогли, как и разные жк мониторы и шрифты. Но ближе к сути.

Я хочу заказать e-ink монитор Dasung Paperlike HD 2019 из Китая за 60к (кому интересно вот пример работы модели 2018 года https://www.youtube.com/watch?v=vLhcM9gsOEU , моя модель с более низким инпут лагом), который должен помочь мне вернуться обратно к программированию и в этот тред. Я думаю, что он мне поможет, т.к. я могу пользоваться e-ink книгами без усталости. И мне стало интересно, какие у меня теперь будут проблемы непосредственно с программированием. У монитора частота экрана около 6гц и инпут лаг 100 мс. Пока вижу следующее:

– Тяжело будет работать с монохромной IDE без раскрашивания синтаксиса. Но, думаю привыкнуть можно будет;
– Монохромный фронтенд тоже настораживает. Вряд ли я смогу работать с фотошопом (или смогу?). Также тяжело будет работать с JS анимацией из-за инпут лага;
– Хотел параллельно с вебом изучить геймдев, но с такой частотой это, наверное, вряд ли возможно – нужно больше 6гц;

Вообще, у меня опасения в основном по фронтенду, но т.к. я его не успел достаточно изучить за 2 года вката (не успел сделать задание Опа на макет), возможные проблемы для меня найти сложно. Хотелось бы послушать анона, что он может придумать и добавить к минусам осознанного дальтонизма. Часто ли при работе бэкэндером приходится работать с фронтэндом, например? На этот монитор много положительных отзывов программистов, может все не так плохо, на самом деле.
Аноним 2019/04/19 09:24:42  №1383966 13
>>1383949
Ну и попробуй сидеть на минимальной яркости за обычным монитором.
Может, прокатит.
Ответы: >>1383972 >>1385178
Аноним 2019/04/21 00:37:03  №1385178 14
>>1383864

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

>>1383966

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

>>1383810

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

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

>>1383734

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

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

>>1383611

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