IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> короче не значит легче (упрощённый синтаксис), php
сообщение
Сообщение #1


Adminь
****

Группа: Пользователи
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Вот фрагмент php кода обслуживающего наш сайт...
Код
return '/'.((($url = (($event = (($event = is_string($event)?$event:QSL)=='')?'':"event=$event")!='' & ($arg = is_array($_arg = $arg)?(count($arg)?implode('&', $arg):false):$arg)!==false)?"$event&$arg":$event.$arg)==''&& $_arg!=='')?'':"?$url");

кто догадаеться что он делает? (ну и опишет его логику если сможете)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


это код для формирования url запроса GET Насколько могу судить.... проверяется собственно uri скрипта в event и переменные в arg, и после проверки (без обнаружения ошибок) формируется собственно url или возвращается пустая строка. Наверное так.. очень интересно это все записано в условной форме, я бы так не стал делать rolleyes.gif


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Тому, кто так пишет, следует почитать книгу А. Голуба "Веревка достаточной длины, чтобы выстрелить себе в ногу" (В PHP синтаксис заимствован из C).


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Adminь
****

Группа: Пользователи
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Цитата
это код для формирования url запроса GET Насколько могу судить

Ну это ты по знакомым словам догадался, хотя я и для POST запросов так же формирую url...

Цитата
Тому, кто так пишет, следует почитать книгу А. Голуба

видимо ты плохо php знаешь или вовсе не знаешь его... я бы мог разбить всё это на 3, 5, 10 строчек, но зачем в ущерб производительности это делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


А можно писать всё в одну строчку - сэкономим на разборе переводов строки... ;)

Сложность интерпретации PHP подобной последовательности круглых скобок и операторов ? сравнима со сложностью интерпретации семантически аналогичной последовательности операторов if. В то же время, скорость интерпретации указанного кода человеком оставляет желать лучшего.

Из того, что PHP - интерпретатор, не следует, что на нём можно писать как попало ("колбаской").

Впрочем, я плохо знаю, что такое компьютер или вовсе не знаю...

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


Цитата
Ну это ты по знакомым словам догадался, хотя я и для POST запросов так же формирую url...

Ну извиняйте, не вам судить о моих знаниях. А для какой цели необходимо формировать адресную строку при посте (хотяб один пример из жизни)?

Разбор кода:
$return
Код
return '/'.$ret2;

вернуть $ret2 с добавленным вначало слешем.
$ret0
Код

$arg = is_array($_arg = $arg)?($ret1):$arg

Если $arg массив, то заменить его на $ret1
$ret1
Код

count($arg)?implode('&', $arg):false

Если массив не пуст, то его содержимое объединяется в строку через знак &, в противном случае false.
$ret2
Код
(($url = $ret3) ==''&& $_arg!=='')?'':"?$url"

если $ret3 пусто и $_arg не пусто то вернуть $ret3 иначе вернуть $ret3 c добавленным спереди знаком вопроса
$ret3
Код
$ret4 !='' & ($ret0)!==false)?"$event&$arg":$event.$arg

Если $ret4 ($event) не пусто и $ret0 ($arg) не ложь, вернуть слияние знаком & строк $event и $arg, иначе вернуть простое слияние строк
$ret4
Код
$event = ($ret5=='')?'':"event=$event"

Если $ret5 непусто, то спереди к $event добавляется строка "event="
$ret5
Код
$event = is_string($event)?$event:QSL

если $event не строка, то заменяется константой (?) QSL

итак, здесь смотится что из себя представляет arg - если массив, то объединяется занком & (если массив пуст, возвращается false), иначе берется как есть. далее смотрим на event - если не строка, то заменяем какой-то предопределнной константой, добавляется спереди строка "event=". Если event изначально пуста, то такой и остается. Далее если $arg и $event успешно обработаны (без ошибок) то они сливаются знаком & иначе сливаются без него. потом если объединенная строка, которая возвращается, с присоединенным спереди слешем, а если эта строка не пуста или если аргуметов ($arg) передано не было, то добавляется еще знак вопроса.

В итоге получаем функцию, возвращающую GET запрос события event c параметром/ами arg (или без них)


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Adminь
****

Группа: Пользователи
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Цитата
А для какой цели необходимо формировать адресную строку при посте

<input type='hidden' name='act' value='Post' />
<input type='hidden' name='CODE' value='03' />
<input type='hidden' name='f' value='6' />
<input type='hidden' name='t' value='3668' />
<input type='hidden' name='st' value='0' />

вот такие вещи можно вставить в POST запрос... иногда даже так красивше, не знаю почему никто не совмещает GET и POST переменные...

Digitalator
Я знал что ты это сможешь, молодец ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата
вот такие вещи можно вставить в POST запрос... иногда даже так красивше, не знаю почему никто не совмещает GET и POST переменные...


Некоторые браузеры и серверы насильно фильтруют строку POST-запроса. В итоге, скрипт так и не дожидается части параметров. Подозреваю, что об этом есть какие-нибудь замечания в RFC.

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Adminь
****

Группа: Пользователи
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Цитата
Некоторые браузеры и серверы насильно фильтруют строку POST-запроса

Может приведёшь пример?

Я вот такой глюк заметил, кеш IE не различает страницы полученные GET и POST запросами...

в переменной _GET в PHP находятся переменные переданные в коммандной строке, а в _POST, переменные переданные как данные типа форма... никто не обещает что данные будут именно типа форма, так что иногда в POST запросе переменные можно передать тока через строку, а значит они попадут в массив _GET параметров...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 6:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name