2014-11-20 2 views
0

Неправильно ли передавать переменную функции, в которой переданная переменная имеет то же имя, что и переменная самой функции? Я никогда не видел, чтобы кто-то это делал, но задавался вопросом, есть ли причина (кроме чтения). Пример:передать переменную функции с использованием того же имени

$variable = "value"; 

function myFunction($variable) { 
    return $variable; 
} 
+0

Я так не думаю. – www139

+0

Нет, внутри функции '$ variable' находится параметр, который вы передали, а не глобальная переменная. – Zerquix18

ответ

2

Нет проблем с этим, кроме некоторых путаниц в именовании. Потому что,

$variable = "value"; // this declaration belong to a global scope 

// but $variable passing through as argument, makes it scope within that function declaration only 
function myFunction($variable) { 
    return $variable; 
} 

Вы могли бы ожидать, что при вызове функции, как myFunction() то есть без какого-либо параметра, то он вернет вам «значение», но совсем не так, причина $variable передается как аргумент не является глобальным.

Но если вы попытаетесь использовать глобальный $variable в пределах myFunction, это вызовет некоторый конфликт, поэтому никто этого не делает.

+0

Я думаю, что более распространенный способ избежать этого конфликта в современных приложениях - никогда не использовать глобальные переменные, после чего вы можете указать переменные, какое имя имеет смысл для области, в которой они находятся. – IMSoP

0

Помимо того, что переменные немного запутывают, чтобы отслеживать, нет ничего плохого в этом. Они существуют в разных областях.

-2

Вы можете использовать глобальное значение и добавить значение по умолчанию в переменную param.

$variable = "value"; 
function myFunction($variable = '') { 
     global $variable; 
    return $variable; 
} 
+0

Я не уверен, что вы думаете об этом но все, что у вас есть, есть неиспользуемый параметр функции. – IMSoP

0

Это до вас, но наоборот, если вы хотите передать намеренно переменную в функцию .. то вы должны использовать это:

$variable = "value"; 

function myFunction($variable) { 
global $variable; 
return $variable; 
} 

echo myFunction('another value'); 

еще один момент. При создании функций, которые вы можете установить значение по умолчанию для ваших PARAMS, чтобы избежать ошибок:

function myFunction($variable="default value") { 
return $variable; 
} 

echo myFunction(); 
0

Там нет ничего плохого с ним на всех, и я бы подумал, что это довольно распространенное явление.

Однако в каждой ситуации вы всегда должны выбирать лучшее имя для переменной или параметра, не применяя одно правило ко всему вашему коду.

Например, в функции поиска базы данных может быть очевидно, к чему относится $id, поэтому это было бы разумное имя параметра; но там, где вы его вызываете, у вас, вероятно, будет множество идентификаторов разного рода, поэтому следует использовать более описательное имя переменной. С другой стороны, каждый раз, когда вы создаете SQL-строку, это, вероятно, единственная такая переменная в области видимости, поэтому ее последовательное имя сохраняет ваш код в порядке и легко читается.

Общее наблюдение заключается в том, что весь код читается чаще, чем он написан (да, даже ваш личный сайт, на который вы не смели бы поделиться с миром). Имена переменных должны быть выбраны с учетом этого: что делает этот код легким для чтения, понимания и обслуживания?

Смежные вопросы