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
Форумы портала PHP.SU :: Версия для печати :: Помогите написать функцию для сокращения кол-во кода
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Помогите написать функцию для сокращения кол-во кода

Страниц (1): [1]
 

1. Andrey2005 - 26 Февраля, 2009 - 18:27:48 - перейти к сообщению
У меня много в коде строк типа
CODE (text):
скопировать код в буфер обмена
  1. $name = $data['name'] = $_POST['name']

CODE (text):
скопировать код в буфер обмена
  1. $name =  $_POST['name']

Помогите написать функцию для уменьшения строк кода, а то у меня постоянно возникают Undefined varible
2. valenok - 26 Февраля, 2009 - 18:37:36 - перейти к сообщению
Ctrl H
-> $name
-> $_POST['name']

Должно сработать даже в ноутпаде.
Зачем тебе приспичило переменные переименовывать ?
3. Andrey2005 - 26 Февраля, 2009 - 18:45:30 - перейти к сообщению
valenok пишет:
Зачем тебе приспичило переменные переименовывать ?

В одной из книг советовали для удобства укорачивать имена переменных, в том же блоке использую trim, addslashes и т.д.
4. Ch_chov - 26 Февраля, 2009 - 19:08:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach($_POST as $k => $val) $$k=$val;

На выходе даст набор переменных, имена которых совпадают с ключами в массиве $_POST

Имхо лучше все таки пользовать $_POST , $_GET и $_REQUEST
С ними код становится понятней и безопасней...
5. valenok - 26 Февраля, 2009 - 19:14:55 - перейти к сообщению
Andrey2005 а они не написали как это сделать ? Или они там же посоветовали укорачивать имена
переменных добавляя еще сотню строк с переприсваиванием ?

Надеюсь из меня лучше писатель получится...

PHP:
скопировать код в буфер обмена
  1. <?PHP foreach($_REQUEST AS $key => $val ) $$key = addslashes(trim($val));


А от undefined variable тебя это не спасёт. Если её пользователь не прислал, она сама ниоткуда не объявится.
Проверку нужно ставить - существует ли вообще переменная или нет.

А еще с кодом выше забавно получится если тебе еще и добавят какой нибудь admin=1
так что тебе еще лучше сразу указать какие переменные должны быть обработаны и созданы.
А это удлинение твоего кода, а если они в этой книге не объясняют как сократить и только кидаются
полезными советами...

Сокращать имеет смысл когда у тебя одна, две, пять переменных и ты их используешь 50 раз в коде.
А зачем тебе каждую переменную сокращать, да и к тому же, где это ты нашёл кардинальное скоращение
между $_POST['name'] и $data['name'] яне вижу.
6. Ch_chov - 26 Февраля, 2009 - 19:28:36 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. foreach($_REQUEST AS $key => $val ) $$key = addslashes(trim($val));

Не поможет, если в в $_REQUEST присутствуют вложенные массивы.
7. Andrey2005 - 26 Февраля, 2009 - 21:19:21 - перейти к сообщению
Прошу прощения за офтоп, а что это за комбинация
? Где за это можно прочитать и как называется эта конструкция ?
8. valenok - 26 Февраля, 2009 - 21:47:36 - перейти к сообщению
Andrey2005 Называется переменная переменная.
http://php.net/manual/ru/languag...les.variable.php
9. Вездеход - 26 Февраля, 2009 - 21:51:22 - перейти к сообщению
если написать так - $$key
то будет создана новая переменная с названием равным значению переменной $key

т.е.
$a="xxx";
$$a="2";

в результате этого получаем $xxx=2

 

Powered by ExBB FM 1.0 RC1