Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Просьба проверить код функции трансформера данных
|
|||
|---|---|---|---|
|
#18+
Есть функция, которая выборочно копирует часть данных из одного хеша в другой, используя различные правила трансляции имен ключей. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Функция работает, но хотелось бы ее «обезопасить» от неправильного использования — проверить, что $hash и $data это именно хеш, $fields это хеш или массив, $prefix это скаляр, а $function это ссылка на функцию. Не подскажите, как все эти проверки сделать? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 18:09 |
|
||
|
Просьба проверить код функции трансформера данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.Есть функция, которая выборочно копирует часть данных из одного хеша в другой, используя различные правила трансляции имен ключей. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Функция работает, но хотелось бы ее «обезопасить» от неправильного использования — проверить, что $hash и $data это именно хеш, $fields это хеш или массив, $prefix это скаляр, а $function это ссылка на функцию. Не подскажите, как все эти проверки сделать? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. (isset($prefix) ? $prefix : '') это вынести из цикла, зачем каждый раз проверять одно и тоже. -проверка изсет префикс мягко говоря бесмысленная, у тебя же нет значения по умолчанию для этого параметра, а если предполагаеться извне передавать нул, так можно сразу передавать пустую строку, а если защита от дурака... так дурак может 0 передать, или фолс if (isset($function)) { $key = $function($key); - это странная логика, и данные для вычисления ключа, и функция посутпают извне, врядли логика обработки ключа функцией, это внутрення логика даного копира хешей. ваще вынести. вцелом ...лучше опиши задачу. тут явно накидано куча. ЗЫ начиная откуда берёться кеш и откуда и зачем берёться нужда преобразовывать.. просто только от функции которая основную часть времени проверяет входные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 20:36 |
|
||
|
Просьба проверить код функции трансформера данных
|
|||
|---|---|---|---|
|
#18+
alex564657498765453(isset($prefix) ? $prefix : '') это вынести из цикла, зачем каждый раз проверять одно и тоже. Действительно, вынесу. alex564657498765453-проверка изсет префикс мягко говоря бесмысленная, у тебя же нет значения по умолчанию Я ведь могу вызвать процедуру только с тремя параметрами, не указанные будут null. alex564657498765453 if (isset($function)) { $key = $function($key); - это странная логика, и данные для вычисления ключа, и функция посутпают извне, врядли логика обработки ключа функцией, это внутрення логика даного копира хешей. ваще вынести. Исходные данные (хеши) берутся из разных источников, это два веб-сервиса (возвращающие объекты в JSON), это SQL-запрос (также возвращающий хеши с ключами в верхнем регистре) и еще один вспомогательный хеш, содержащий вычисленные промежуточные данные. Кроме того, на клиенте не нужны все данные, которые есть в хеше, поэтому чтобы сократить объем передаваемых данных, в конечный хеш копируются только нужные поля. Все эти данные мне нужно свести в один хеш, который на клиенте будет забираться JS-скриптом и отрисовываться с помощью jQuery. Чтобы упростить скрипт на клиентской стороне, мне нужно подготовить хеш — какие-то данные из нескольких хешей свести в один, какие-то трансформировать, у каких-то преобразовать ключи. Аргумент $fields содержит список полей, которые нужно переносить в конечный хеш. В простейшем случае это неассоциированный массив с полями, которые будут скопированы из источника в приемник. Если одно из полей задано с ключом $field=>$alias, это значит что поле $field источника нужно скопировать в поле $alias приемника. В разных источниках некоторые поля могут совпадать, поэтому при указании аргумента $prefix в каждому полю в источнике будет добавлен префикс, чтобы не перепутать его с другими полями. Иногда имена ключей формируются извне (например в mysqli они в верхнем регистре) и тогда их нужно преобразовать. Я бы хотел вообще использовать лямбда-функцию, но то ли неправильно делал, то ли мой PHP их не поддерживает, поэтому пришлось обойти ссылкой на функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2014, 10:48 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38706486&tid=1462571]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 384ms |

| 0 / 0 |
