Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2011, 14:37   #41
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
А что если например нужно получить string? Например когда в гет параметрах только один елемент /?text ???
Тут всё просто - если функция даже чисто теоретически может вернуть несколько значений - всегда нужно возвращать массив.
А уж сколько в этом массиве будет элементов - неважно.
Нужный вам элемент получить потом из массива несложно - зато никогда не запутаетесь.

В противном случае - через пару месяцев вы сами и помнить не будете, в каком случае у вас возвращается строка, а в каком массив.
Что уж тут говорить о других программистах, которым возможно придется использовать/сопровождать ваш код.

На самом деле даже куча нативных функций в PHP страдает этой фигней - возвращают т.н. mixed.
А ещё в куче функций перепутаны needle и haystack - что заставляет постоянно лезть в мануал за уточнениями.
С нативными функциями уже ничего не поделаешь - ну а при написании пользовательских функций желательно избавлять себя от непоняток.
Andkorol вне форума Ответить с цитированием
Старый 29.08.2011, 14:45   #42
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Тут всё просто - если функция даже чисто теоретически может вернуть несколько значений - всегда нужно возвращать массив.
А уж сколько в этом массиве будет элементов - неважно.
Нужный вам элемент получить потом из массива несложно - зато никогда не запутаетесь.
.
Не подскажите пример?

То есть возвращать вот так:

PHP код:
foreach($output as $k=>$v)  {
                     
$k GetParams::xss_clean($k);   
                        if(empty(
$v)){   
                             
$output[] = $k
                             
$data $output;
                        }else{   
                             
$v GetParams::xss_clean($v); 
                             
$output[$k] = $v
                             
$data $output
                        } 


Последний раз редактировалось dem66; 29.08.2011 в 14:52.
dem66 вне форума Ответить с цитированием
Старый 29.08.2011, 15:02   #43
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
Не подскажите пример?
Пример чего - как из массива получить нужный вам элемент по ключу?

Это - бессмысленный фрагмент:
Цитата:
if(empty($v)){
$output[] = $k;
$data = $output;
}else{
$v = GetParams::xss_clean($v);
$output[$k] = $v;
$data = $output;
}
Вы выполняете это всё в цикле - и фактически при каждой итерации просто переопределяете $data - мне трудно понять зачем...
Andkorol вне форума Ответить с цитированием
Старый 29.08.2011, 15:10   #44
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

а ну да. нужно:

PHP код:
$out = array();
foreach(
$output as $k=>$v)  { 
                     
$k GetParams::xss_clean($k);    
                        if(empty(
$v)){    
                             
$out[] = $k;  
                        }else{    
                             
$v GetParams::xss_clean($v);  
                             
$out[$k] = $v;  
                        }  

return 
$out
??? или я не прав
dem66 вне форума Ответить с цитированием
Старый 29.08.2011, 15:24   #45
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ну типа того...

Только криво как-то вот сама идея насчет "если нет значения - возвращаем просто ключ".
В том смысле, что вы добавляете в массив то ассоциативный элемент(если есть значения), то элемент с числовым ключом(если значения нет).

Если у вас вдруг будет GET вида ?name=Sam&test - ваша функция вернет массив такого вида:
Цитата:
array
'name' => string 'Sam' (length=3)
0 => string 'test' (length=4)
Что с этим делать дальше - малопонятно.
Andkorol вне форума Ответить с цитированием
Старый 29.08.2011, 15:42   #46
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

вот вот. и ка это разрулить?
dem66 вне форума Ответить с цитированием
Старый 29.08.2011, 15:56   #47
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
вот вот. и ка это разрулить?
Так это вам виднее - вы же пишете код...

По-хорошему - таких противоречивых ситуаций в коде быть не должно.
Т.е. либо нормальное ЧПУ с корректным роутингом - либо нормальный корректный GET в формате ключ=значение.
Всё, что в GET без значения - в топку.
Andkorol вне форума Ответить с цитированием
Старый 29.08.2011, 16:09   #48
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

а если реализовать GET вида /?text/privet

array('text'=>'privet');
dem66 вне форума Ответить с цитированием
Старый 29.08.2011, 16:15   #49
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
а если реализовать GET вида /?text/privet

array('text'=>'privet');
Это всё изврат - и выглядит соответственно...
Сделайте нормальный ЧПУ, если не хотите нормальный GET.
Andkorol вне форума Ответить с цитированием
Старый 29.08.2011, 17:09   #50
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

да хватит уже цитировать.
Почему изврат это ведь и есть ЧПУ настоящий. Ну не знаю, везде в интернете такой ЧПУ на форумах пишут, и в разных статьях так рекомендуют.
То есть делать только вида /?text=privet ?
dem66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows 98 и Framework 2 doober Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 7 12.07.2010 14:37
Framework 3.5 psycho-coder Общие вопросы .NET 8 17.07.2009 14:33
PHP и MySQL: Тестирование студентов Sanakan PHP 3 27.05.2009 20:26
Framework Blackout Софт 8 19.02.2009 09:49