«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/02/28 16:53:26  №1356794 1
841bd-clip-32kb.png (32, 556x362)
362x556
Проверьте код, пожалуйста, господа. https://ideone.com/XUZklL
Задачка про вопросы из раздела про ООП.
Ответы: >>1356827 >>1369055
Аноним 2019/02/28 17:13:20  №1356827 2
>>1356794
Почему конструктор не используешь?
Ответы: >>1356873
Аноним 2019/02/28 17:47:15  №1356873 3
Ответы: >>1356877 >>1356879 >>1357057
Аноним 2019/02/28 17:57:11  №1356877 4
>>1356873
Ты поля из вне задаешь. Я против такого подхода потому что создается не валидный обьект. Ты через new его создаешь а потом туда пихаешь значения.
Ответы: >>1356943
Аноним 2019/02/28 19:48:31  №1356943 5
>>1356877
>>1356879
честно говоря, не особо понял в чем моя ошибка. Скажи,пожалуйста, что мне конкретно нужно переделать?
Ответы: >>1357054
Аноним 2019/03/01 05:26:32  №1357054 6
>>1356943
$q1 = new ChoiceQuestion("Какая планета располагается четвертой по счету от Солнца?", 'b');
\t$q1->options = array('a' => 'Венера', 'b' => 'Марс', 'c' => 'Юпитер', 'd' => 'Меркурий');
\t$q2 = new NumericQuestion("Чему равна скорость света в км/с?", 300000, 20);
\t$q2->deviation = 20000;

Поля $q1->options и $q2->deviation = 20000 ты все так же задаешь из вне.
Ответы: >>1357116 >>1357138
Аноним 2019/03/01 08:39:27  №1357116 7
Аноним 2019/03/01 09:17:18  №1357138 8
>>1357054
>>1357057
Переделал вот: https://ideone.com/Lb6iG1.
Если я правильно понял, то переопределить метод изменив количество параметров не получится. Поэтому я в каждый дочерний класс запихнул конструктор. Верно или я ошибаюсь?
Ответы: >>1357141
Аноним 2019/03/01 09:18:17  №1357141 9
Ответы: >>1357205 >>1369055
Аноним 2019/03/01 12:19:00  №1357205 10
>>1357141
Да норм. Конструктор часть конкретного класса. Я бы не рассматривал его как часть интерфейса
53-232 Аноним 2019/03/23 20:14:15  №1369055 11
>>1355067

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

Сессии - это чуть усложненная версия. Сессия это индивидуальное для каждого пользователя хранилище данных на сервере (в простейшем случае просто файл). Можно создавать сессию и в нее писать id пользователя. Но сессии обычно удаляют, если их не использовали некоторое время, и пользователя будет разлогинивать. Мы можем продлить время жизни сессии, но тогда наш диск будет забиваться старыми сессиями.

>>1356794

> if($this->correctAnswer == $answer) {
> return true;
Так как оператор == уже возвращает true/false, то можно писать просто return $this->correctAnswer == $answer;

> if (($this->correctAnswer == $answer) || (($answer <= $plusDeviation) && ($answer >= $minusDeviation))

Первое сравнение на равенство лишнее.

А так, решено правильно.

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

>>1357720

Хорошо, ответ верный.