«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/04/17 23:04:47  №1383151 1
Ответы: >>1385179
Аноним 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 10:39:33  №1383408 5
>>1383372
Вот я и спросил, зачем тут const. Лишний код только придется писать,типа если переданный пол в конструктор == male, то $this->gender = GENDER_MALE.
Ответы: >>1383428 >>1385179
Аноним 2019/04/21 00:37:34  №1385179 6
>>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 7