«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/04/18 04:43:15  №1383193 1
Зачем оп с списке студентов советует создать константу пола (const GENDER_MALE) в модели студента, если мы и так в конструктор будем пол передавать и записывать его в обычное поле, как и все остальное?
Ответы: >>1383195 >>1383545 >>1385179
Аноним 2019/04/18 04:47:47  №1383195 2
>>1383193
Шоб везде писать

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

if ($vasia->getGender() === User::GENDER_MALE) {
...
}
Ответы: >>1383372 >>1383545
Аноним 2019/04/18 09:54:49  №1383372 3
>>1383195
>$vasya->setGender
не скрепно как-то
вася должен быть сразу создан с правильным гендером безо всяких сеттеров
Ответы: >>1383408 >>1383858
Аноним 2019/04/18 10:39:33  №1383408 4
>>1383372
Вот я и спросил, зачем тут const. Лишний код только придется писать,типа если переданный пол в конструктор == male, то $this->gender = GENDER_MALE.
Ответы: >>1383428 >>1385179
Аноним 2019/04/18 11:31:01  №1383428 5
>>1383408
Это позволяет держать значение male только в одном месте. Из любого места кода я могу обратиться к константе Student::GENDER_MALE и мне не важно, что там за значение (m/male/man/muzhskoj что только не пишут). Не нужно бегать править контроллеры, сервисы, валидаторы, тесты только потому что приняли "архитектурное" решение сменить 'female' на 'f'.
Аноним 2019/04/19 06:13:31  №1383858 6
>>1383372

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

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

>>1383966

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

>>1383810

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

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

>>1383734

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

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

>>1383611

Изучить, как устроено веб-приложение, а не изучить, как настроить фреймворк.
Аноним 2019/04/21 00:37:34  №1385179 9
>>1383193
>>1383408

Для случаев, когда есть выбор из нескольких значений, эти значения принято обозначать константами. Плюсы: защита от опечаток; видно, какие есть вообще варианты значения; видно, что это не случайная строка; автодополнение в IDE.

То есть Student::GENDER_MALE говорит гораздо больше, чем просто строка 'male' или число 1.

И в конструктор ты будешь передавать сразу константу.

>>1383151

> if (($answer == $this->answer) || array_search($answer,$this->deviation) != FALSE){

Тут явно что-то неправильно сделано. Для ответа с погрешностью тебе надо лишь проверить, что ответ находится в диапазоне (правильный ответ - погрешность; ответ + погрешность). То есть обычные сравнения больше/меньше.

> if (property_exists($question,'options') == TRUE){
> echo "Варианты ответов:\n";

А вот это неправильно. Это какой-то костыль. Тут получается, если у нас есть 10 видов вопросов, мы должны написать 10 ифов. Правильнее было бы сделать так: сделать в вопросе метод printQuestion() и пусть каждый вопрос сам определяет, как его надо выводить. Так мы можем добавлять новые типы вопросов, не трогая старый код.

> Правильно ли
> function checkTotalAnswers пытаться поместить в класс Questions?

Думаю, что нет, так как Question представляет один вопрос, а функция работает со множеством вопросов.
Ответы: >>1385271
Аноним 2019/04/21 08:47:53  №1385271 10