«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/03/01 05:35:14  №1357057 4
>>1356873
И еще мне кажется что делать echo в методе не совсем верно, лучше возвращать строки и пусть кто вызывал твой метод разбирается что с ней делать.
echo " {$key}. {$option}\n"; заменить на return " {$key}.{$option}";
Ответы: >>1357116 >>1357138
Аноним 2019/03/01 08:39:27  №1357116 5
Аноним 2019/03/01 09:17:18  №1357138 6
>>1357054
>>1357057
Переделал вот: https://ideone.com/Lb6iG1.
Если я правильно понял, то переопределить метод изменив количество параметров не получится. Поэтому я в каждый дочерний класс запихнул конструктор. Верно или я ошибаюсь?
Ответы: >>1357141
Аноним 2019/03/01 09:18:17  №1357141 7
Ответы: >>1357205 >>1369055
Аноним 2019/03/01 12:19:00  №1357205 8
>>1357141
Да норм. Конструктор часть конкретного класса. Я бы не рассматривал его как часть интерфейса
53-232 Аноним 2019/03/23 20:14:15  №1369055 9
>>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

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