Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Самопис для форума [9]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (14): В начало « ... 5 6 7 8 [9] 10 11 12 13 ... » В конец    

> Без описания
Panoptik
Отправлено: 24 Декабря, 2014 - 13:06:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




этот биндер пишется в 30 строк. смотря что нужно делать в колбеке

у меня например принято за стандарт возвращать json с полем success
если success == true то делать одно, если нет , то вывести ошибки согласно общепринятому стандарту, например выделить красным инпуты (добавить класс) и добавить подстрочно что именно за ошибки в виде текстовых сносок

после саксеса по мере необходимости тоже добавляются всякие плюшки например можно передать в джейсоне проперти message - что значит нужно отобьразить мессадж
если это попап, то нужно очистить поля и закрыть попап
можно просто передать саксес колбек (имя функции которую нужно вызвать при успехе)
можно передать строку js и выполнить эвал

собственно вариантов может быть много и о стандарте нужно договариваться и принимать его исходя из требований


-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Декабря, 2014 - 13:22:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Panoptik пишет:
собственно вариантов может быть много и о стандарте нужно договариваться
Именно с тем кто возьмется писать биндер я и хотел обсудить нюансы. В том смысле, что у меня ж бекенд уже умеет возвращать стандартно оформленные данные в JSON, на наличие полей и их значения должна будет опираться логика биндера и не только биндера, раз уж под одну расческу всех.

Описать пример ответа?
 
 Top
tuareg
Отправлено: 24 Декабря, 2014 - 13:28:57
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Опиши. Может там делов-то на пять минут
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Декабря, 2014 - 13:46:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Бекенд отвечает так:

CODE (javascript):
скопировать код в буфер обмена
  1. {
  2.  
  3.     // этого блока может не быть
  4.     // он будет только при бросании исключения
  5.     report: {
  6.         type: 'member_error', // все варианты: system_error, member_error
  7.         title: 'Заголовок сообщения',
  8.         description: 'Описание сообщения',
  9.         location: '/url/to/redirect' // этого св-ва может не быть
  10.         // при бросании исключения можно добавлять абсолютно любые кастомные данные
  11.         // конструктор исключения принимает всего один аргумент - массив
  12.         // location был дан как пример кастомного возвращаемого св-ва
  13.         // ключ type не может быть переопределен ключем входного массива
  14.         // он зависит от класса исключения
  15.  
  16.         // в debug-режиме тут будет полный стектрейс, имя файла,
  17.         // номер строки где бросили исключение, и что-то там еще для отладки
  18.  
  19.     }
  20.  
  21.     // любые другие данные добавленные во вьюху во время работы контроллера
  22.     // их может не быть если было брошено исключение, т.к. исключение очищает тело ответа
  23.     // в любом случае клиент увидит либо данные, либо report
  24.  
  25. }


То же самое для XML-контекста вывода, ну т.е. будет XML с такой же структурой как у этого JSON.
Только при исключении обернуто будет в корневой элемент <response> всегда.
А при успешной выдаче результата, если задана кастомная XSD-schema то будет рисовать по ней, иначе тот же корневой <response>
 
 Top
Panoptik
Отправлено: 24 Декабря, 2014 - 14:26:08
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ну хмл можешь оставить, он никому не нужен в данном случае

второе - это имеется ввиду распространенный кейс ошибок не запроса а именно валидации, то есть если пользователь заполняет форму с 3-5 филдами, то у меня к примеру на каждый невалидный филд приходит свой мессадж в массиве errors примерно в таком формате

CODE (javascript):
скопировать код в буфер обмена
  1. {
  2.   "success": false,
  3.   "errors": {
  4.      "email": ["Email test@blah.com already exists"],
  5.      "login": ["Login must be between 6 and 16 characters", "Login may contain only alphanumeric characters"],
  6.   }
  7. }


еще конечно желательно обрабатывать ошибки сервера а-ля 403, 404, 500
при этом если получается ошибка 403 то по идее адекватной реакцией должно быть событие отображения формы логина (если кончилась сессия) или отображения ошибки из-за чего что-то не происходит


-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Декабря, 2014 - 14:30:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Panoptik пишет:
заполняет форму с 3-5 филдами
Формируй как сам захочешь. Собирай ошибки в массив, потом передай его по ключу в исключение - клиент получит все переданные данные.
Panoptik пишет:
403, 404, 500
403 аяксом? Ну хз, это же аякс и разбирает какой код ответа ему прислали.
Ой не, погоди, это вообще не должно значить что сессия закончилась.
Ну всмсле может значить, но к примеру аякс ломится в папку где Option -Indexes он получит 403, хотя к сессии это никакого отношения не имеет.

404 - ваще нет смысла, ответ не получен. 500 - та же история.
 
 Top
tuareg
Отправлено: 24 Декабря, 2014 - 14:32:50
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




А стандартный плагин валидации нельзя сразу забобахать?
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Декабря, 2014 - 14:33:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну вот можно стандартный, даже нужно.
Но стоит определиться с форматом данных.
 
 Top
Panoptik
Отправлено: 24 Декабря, 2014 - 14:34:53
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




во-первых передавать ошибки валидации через исключения как-то некошерно
во-вторых станартные ответы сервера можно передавать в тот же джейсон а-ля

CODE (javascript):
скопировать код в буфер обмена
  1. {
  2.   "responseCode": 200,
  3. }


но в случае непредвиденной ошибки сервера обработать ошибку аякс запроса тоже соответственно


-----
Just do it
 
 Top
tuareg
Отправлено: 24 Декабря, 2014 - 14:35:32
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Просто есть вот это чудо, вроде хвалят (сам не использовал), но код нормальный http://habrahabr[dot]ru/post/180279/
Там фактически получается, что 90% валидации на клиенте
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Декабря, 2014 - 14:39:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Это все хорошо, но на бекенде один хрен валидировать надо ))
Я так вообще валидацию на клиенте редко делаю поэтому - ибо нет смысла, сервер вернет ответ.
Но прикрутить можно будет потом этот плагинчик.
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Марта, 2015 - 00:04:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну давайте что-ли подведу итоги (некоторые весчи повторю, ото страниц набалаболили то много):

1) Все добавляемые компоненты комментируются и форматируются по PSR1 (гоняю кодснифера).
2) Предусмотрена возможность горизонтального масштабирования (инстансы приложения).
3) Предусмотрен отдельный поддомен для статики.
4) Предусмотрен отдельный поддомен для аттачей и аплоада.
5) Поддержка CLI-режима для крона (~$ /usr/bin/php /path/do/htdocs/index.php --request /cronjobs/jobN?par1=1&par2=2).
6) Конфиги в JSON с возможностью комментирования.
7) Логгирование любых действий, складывает в файлы, ротирует автоматом, формат - JSON.
8) database/memcache/native(session) Storage.
9) Контексты (представления) вывода меняемые на лету - html, xml, json, txt.
10) Репликации БД, еесно - умеем несколько коннектов одновременно.
11) Выкинул или проигнорил всякие тупняки типа: isPublic()/isStatic() (ошибка разработки), abstract (класс когда все методы статические), private (про пользака) - ибо это все просто одной фразой: Не лазий если не нужно.
12) Класс Request похудел.
13) Запилил фильтры, валидаторы и формы, которые этим делом пользуются. Похоже на ZF2, кроме того можно тупо отписать "Validation Rules Chain" и не парится.
14) Редиректы (и накопление остальных/других заголовков ответа) пока оставлены в реквесте.
15) Подгрузка языковых локалей только по требованию компонента (руками).
16) На клиенте взял jQuery.
17) Запилил кое-какую клиентскую обвязку на сабмит форм.

18) Регистрация пользака в процессе реализации.

Вот прямо сейчас в репозитории кое-какие несрастухи. дамп БД не актуальный, конфиг не актуальный, кое-что в коде разломал. Допилю и сообщу когда можно пощупать будет.
 
 Top
RomAndry Администратор
Отправлено: 23 Марта, 2015 - 09:50:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




Давайте, тогда согласуем требования по софту и я создам тестовый сервер.
Вопрос открытый со структурой базы (или я что-то провтыкал), что бы начать делать конвертер
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 23 Марта, 2015 - 10:08:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




0) PHP 5.3 и выше.
1) Apache 2.2 и выше (+ включенный modrewrite) или (не И!) Nginx (хоть самый бородатый).
2) Мускуль 5.1 и выше.
3) Мемкеш для хранения сессионных данных (в репо не реализовано, сессию сейчас хранит БД).
4) Три хоста, подробности тут.

Только прямо щас ты не развернешь - в репозитории все еще поломано. А в прошедшую пятницу у меня умер биос на материнке и я все выходные колупался с компом, так и не успел поправить репо.


Лайм, погоди-ка.
С какой-то там версии мемкеш вроде умеет лочить, типа а-ля мьютексты-семафоры, все такое.
Не?
Кто в курсе?
 
 Top
LIME
Отправлено: 23 Марта, 2015 - 12:10:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




может в memcached ?
http://smira[dot]ru/posts/20081024we[dot][dot][dot]memcached-3[dot]html

не знаю
в редисе вообще лочить не надо
он из коробки атомарен
и он просто гораздо удобнее
+ персистентность есличе
но для сессий это все лишнее
но иметь на будущее хорошо бы
 
 Top
Страниц (14): В начало « ... 5 6 7 8 [9] 10 11 12 13 ... » В конец
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Колонка администратора »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB