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 :: инициализация входящих данных [2]
return(isset($arr[$key]) and !empty($arr[$key])) ? $arr[$key]:$default;
}
echo getData($_GET,'mydata','default_value');
Только в этом случае мы получим notice, если обратимся как echo $_GET['not_defined_key'].
Но это уж простите, нужно отслеживать в коде, не перекрывая стандартные глобальные массивы PHP.
Мое скромное имхо... )
OrmaJever
Отправлено: 15 Июля, 2014 - 20:45:30
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Мелкий пишет:
А вот для сессии откровенно неудобно, см. $_SESSION['foo']['bar'] = 1;
(Добавление)
хотя замеры скорости и памяти наверное не полюбят такую реализацию метода, но в своё оправдание могу сказать что обьект создаётся только когда есть обращение к ключу
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
DlTA
Отправлено: 16 Июля, 2014 - 00:15:47
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
OrmaJever пишет:
шах и мат
но надо добавить сноску 5.4+
OrmaJever
Отправлено: 16 Июля, 2014 - 00:50:29
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
DlTA почему?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
DlTA
Отправлено: 16 Июля, 2014 - 00:52:06
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
ошибся, спутал с результатом возврата функции, а там разыменование появилось с 5.4
Мелкий
Отправлено: 16 Июля, 2014 - 09:45:31
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
OrmaJever, я читаю все темы. Если ничего не ответил - значит или ещё не прочитал или сказать нечего Чаще второе.
Хороший вариант. Не догадался.
Осталось session_start перекинуть в класс сессий - чтобы сессия стартовала только при попытке что-то в сессию записать (при чтении - стартовать сессию только с условием существования $_COOKIE[session_name()] или $_GET[session_name()])
----- PostgreSQL DBA
DlTA
Отправлено: 16 Июля, 2014 - 09:52:10
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Мелкий пишет:
OrmaJever, я читаю все темы. Если ничего не ответил - значит или ещё не прочитал или сказать нечего Чаще второе.
это к этой теме?
OrmaJever
Отправлено: 16 Июля, 2014 - 11:48:54
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Мелкий пишет:
Осталось session_start перекинуть в класс сессий - чтобы сессия стартовала только при попытке что-то в сессию записать (при чтении - стартовать сессию только с условием существования $_COOKIE[session_name()] или $_GET[session_name()])
ну это по-моему лишнее, лично я всегда стартую сесию в начале скриптов даже если пока её не использую
В итоге после всех доработок класс выглядит так
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
OrmaJever
Хм... Countable? А зачем он нужен в этом контексте? Вдруг нужно получить количество всех элементов в многомерном массиве? Этого сделать уже не получится. Нельзя будет передать флаг в метод, который возвращал бы кол-во элементов рекурсивно(в итерфейсе флаг не описан).
Я об этом... + ко всему ещё одна отравляющая очевидность:
$_GET, $_POST и остальные глобальные массивы перестают быть массивами при таком использовании, тем самым мы теряем возможность применять к ним функции для работы с массивами.
Велосипеды должны упрощать работу, но никак не урезать возможности языка. Как итог - зависимость на зависимости вокруг этого класса... Ни в коем случае не хочу задеть труды OrmaJever, но я б не рекомендовал перекрывать стандартные глобальные массивы.
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
teddy пишет:
Вдруг нужно получить количество всех элементов в многомерном массиве
как бы это глупо не звучало, но за все годы что я знаю php я даже не догадывался про существование второго параметра в функции count, наверное он и не нужен
teddy пишет:
Велосипеды должны упрощать работу, но никак не урезать возможности языка.
это было самое первое моё требование к этому классу, и как показала практика мне удалось добиться того что например стандартный $_GET и обьект $_GET моего класса практически не отличаются по использованию. Да есть мелкие особенности, но они либо терпимы либо очень редко используемы.
Опять же на любителя, я просто показал способ избавиться от нотисов, а использовать его или нет это уже дело каждого. (Добавление) DlTA увы, но совсем ссылки использовать в этом классе нельзя (и в параметре и в присвоении)
из-за того что имя нового обьекта такое же как и у самого массива, то при присвоении уходим в рекурсию
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.