Михаил Красильников @Mekras
Веб-разработчик
Information
- Rating
- Does not participate
- Location
- Долгопрудный, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Software Architect, Web Developer
Lead
PHP
Docker
OOP
Linux
Designing application architecture
System analysis
Symfony
А тут объекты и не нужны. Просто не хочется создавать глобальные переменные вместо статических свойств как сейчас.
>В РHP есть пространства имён, не нужно ничего «эмулировать».
В PHP > 5.0, < 5.3 их нет. А нам приходится использовать библиотеку на хостингах где нет 5.3.
> здесь невозможно использовать autoload, нужен require.
Это почему же нельзя? Мы используем, там, где это надо. Все имена классов начинаются с «Botobor_». Сделать функцию автозагрузки элементарно.
> запрашивать необходимые параметры в конструкторе
Да пожалуйста! Если в конкретном проекте это имеет смысл — напишите обёртку, которая будет передавать в метод аргумент $req, и тогда метод не будет трогать $_SERVER. Но нам, бывает, приходится иметь дело с проектами, которые написаны не нами и по которым нет документации, а защитить форму надо «вот уже прям щас». Бывают проекты, где и фреймвока-то нет, просто набор скриптов. Разные, в общем, проекты бывают. И часто обработка $_SERVER — вполне допустимый компромисс между красотой решения и затратами на реализацию.
> html нужно разбирать с помощью XML-парсера
Кому нужно? :-) Нет, как расширение функциональности, в виде отдельного модуля, это конечно можно сделать. Я даже обязательно тикет такой открою. Но, как я уже писал выше, мы сталкиваемся с самыми разными проектами. И на многих из них, использование парсера будет напоминать забивание гвоздя под крючок для картины при помощи промышленного пневмомолота. Это конечно круто, высокотехнологично… но смысл?
Знаете, я некоторое время назад, тоже был пуристом, как и Вы. Но в последнее время стал всё чаще задумываться и об экономической целесообразности.
Если утечёт подпись и пойдёт спам, её легко сменить.
Не поясните зачем?
Защита на этом не основывается. Это лишь одна из возможных проверок.
> Поля приманки могут создать проблемы с автозаполнением — абсолютно легальные пользователи отсеются.
Разработчик волен не использовать поля-приманки в формах, которые могут заполняться одним пользователем многократно, или в любых других по своему усмотрению.
> несколько классов в одном файле
Обычно мы так не делаем, но здесь это вполне сознательное решение. Причина — компактность и простота подключения к сайту.
> статические методы
Что не так со статическими методами? В данном случае они выполняют функцию эмуляции пространства имён.
> обращение к глобальным переменным внутри класса
Если речь идёт про обращение к $_SERVER в Botobor_Keeper::handleRequest, то это на усмотрение разработчика. Методу можно передать аргумент $req, и тогда он $_SERVER трогать не будет. Если у Вас есть идеи, как сделать лучше — буду рад услышать.
> парсинг html регуляркой
Ваши предложения?
> настройки через массивы параметров.
Где?
Защита от CSRF — ещё один слой, который может быть, а может и не быть. Например, зачем защита от CSRF на сайте, где нет регистрации пользователей?
Если это форма комментария — можно установить большой lifetime, или вообще отключить проверку.
Если это форма запроса звонка, расположенная на отдельной странице — можно установить lifetime поменьше.
Никто разработчика не заставляет использовать все проверки со значениями по умолчанию.
DateInterval появился только в PHP 5.3, а нам надо было обеспечить работу библиотеки и под более ранними версиями 5-й ветки.