удаление переменной, которая была передана по ссылке

rudik

Developer
удаление переменной, которая была передана по ссылке

В функцию передается переменная, после выплнения функции ее надо удалить. Пример:

PHP:
function test(&$x) {
       ....
      //  А вот тут надо сделать unset() для $_POST['test'];
     // при этом мы не знаем будет ли то $_POST['test'] или $_POST['test_1'] ...
}

test($_POST['test']);
Как можно это сделать или есть ли возможность определить название переменной, которая передается по ссылке в функцию или не по ссылке.
 

Demiurg

Guest
А теперь поподробнее о задаче. Такие желания говорят о неправильном проектировании.
 

Johannes

Guest
Request variables: $_REQUEST
An associative array consisting of the contents of $_GET, $_POST, and $_COOKIE.

В маны смотреть надо
 

rudik

Developer
Задача - проверка поступивших в скрипт переменных на соответствие типа и установка значения по умолчаню для данной переменной, если она не удовлетворяет условиям. При этом желательно дропнуть переменную superglobal.

2 Johannes: $_REQUEST не подходит, так как переменные кук могут перекрывать переменные $_GET и $_POST. Не всегда модель GPC подходит, поэтому и созданы переменные $_GET, $_POST, $_COOKIE. Для меня массив $_REQUEST - нежелателен.
 

_RVK_

Новичок
PHP:
$_POST['foo'] = 'Bla-bla-bla';

function foo(&$var)
{
   $var=null;
}

print (isset($_POST['foo'])) ? $_POST['foo'] : '$_POST["foo"] not defined';
foo($_POST['foo']);
print (isset($_POST['foo'])) ? $_POST['foo'] : '$_POST["foo"] not defined';
 

rudik

Developer
Пример функции, которую я использую:

PHP:
/**
* Для того, чтоб не писать код для проверки $_GET, $_SESSION параметров,
* создана эта функция, если параметр не существует, то устанавливается
* значение по умолчанию, также проверяет тип значения int и array
* а также работает с enum значениями
* @param array $global_var
* @param enum('int', 'array', '') $default_value
* @param mixed $type
* @return void
*/
function globalVar(&$global_var, $default_value, $type = '') {
	if (!isset($global_var)) {
		$global_var = $default_value;
	} elseif (is_array($type) && !in_array($global_var, $type)) {
		$global_var = $default_value;
	} elseif ($type == 'int' && !is_numeric($global_var)) {
		$global_var = $default_value;
	} elseif ($type == 'array' && !is_array($global_var)) {
		$global_var = $default_value;
	} else {
		$global_var = trim($global_var);
	}
	return $global_var;
}
 

Johannes

Guest
Re: удаление переменной, которая была передана по ссылке

Автор оригинала: rudik
... или есть ли возможность определить название переменной, которая передается по ссылке в функцию или не по ссылке.
К тому.
 

_RVK_

Новичок
rudik
Правда, непонятно зачем её убивать? Просто возвращай false если не соответствует. Нотисов же потом не оберешся...
 

Screjet

Новичок
Бывают такие моменты..
Передавай аргумент по названию
PHP:
function test( $var_name ){
   unset($_POST[$var_name]);
}
test('test');
// или если неизвестен суперглобал
function test( &$var, $name ){
   unset($var[$name]);
}
test($_POST, 'test');
 
Сверху