Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как превратить ассоциативный массив в набор переменных? / 7 сообщений из 7, страница 1 из 1
12.02.2013, 04:12
    #38147074
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
Функция принимает набор параметров:
private $prm = array(
'uploadDir' => 'uploads/',
'previewsDir' => 'previews/',
'maxNumberOfFiles' => 100,
'maxSpace' => '100M',
'maxSize' => '10M',
'allowedType' => array('jpeg', 'jpg', 'png', 'gif')
);

Они используются по всей функции, но обращаться к ним через $this->$prm['uploadDir'] совсем не прикольно. Можно пересохранить во внутренний массив, тогда станет $prm['uploadDir'], что тоже бяка. Через '->' обращаться нельзя. Можно как-нибудь автоматически сделать из массива переменные: $uploadDir = 'uploads/' и т. д.?
...
Рейтинг: 0 / 0
12.02.2013, 05:14
    #38147085
madbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
...
Рейтинг: 0 / 0
12.02.2013, 05:52
    #38147093
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
Shitbox2,

extract($prm);
...
Рейтинг: 0 / 0
13.02.2013, 07:13
    #38148818
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
Черт, я же читал про эту функцию. Только как увидел, про какой-то массив символьных переменных сразу подумал, что это как-то к кодировкам относится и пропустил)

Ну а так, нормальная функция, сами пользуетесь часто, проблем не возникает?
...
Рейтинг: 0 / 0
13.02.2013, 07:57
    #38148828
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
Shitbox2,

непользуемся
плохая функция. засоряет область видимости переменными. по умолчанию перезапишет существующую переменную аналогичной из массива.
...
Рейтинг: 0 / 0
13.02.2013, 15:54
    #38149764
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
Это да, тоже подумал... Хоть переобзывай эти дурацкие $this->$prm['uploadDir']...
...
Рейтинг: 0 / 0
15.02.2013, 09:25
    #38152307
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как превратить ассоциативный массив в набор переменных?
Shitbox2Функция принимает набор параметров:
private $prm = array(
'uploadDir' => 'uploads/',
'previewsDir' => 'previews/',
'maxNumberOfFiles' => 100,
'maxSpace' => '100M',
'maxSize' => '10M',
'allowedType' => array('jpeg', 'jpg', 'png', 'gif')
);

Они используются по всей функции, но обращаться к ним через $this->$prm['uploadDir'] совсем не прикольно. Можно пересохранить во внутренний массив, тогда станет $prm['uploadDir'], что тоже бяка. Через '->' обращаться нельзя. Можно как-нибудь автоматически сделать из массива переменные: $uploadDir = 'uploads/' и т. д.?

а зачем такой изворот? просто код $this->save_to($prm['uploadDir']) не является менее читабельным чем $this->save_to($uploadDir). А потом ещё, ключём массива может быть любая строка, а вот название переменной имеет в данном случае ограничения. Поэтому не каждое значение из массива можно вынести в одноимённую переменную. А потом ещё, представь, как программист, дописывающий/исправляющий код после тебя, будет искать в функции например из 150-200 строк откуда у тебя взялась переменная $uploadDir и что в ней записано, если ты где-то в начале функии вызовешь extract(). Просто я вот например в NetBeans пишу, так вот, она такую переменную мне точно не отловит, и не сможет показать из чего она появилась.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как превратить ассоциативный массив в набор переменных? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]