Мне нужно иметь возможность вызывать различные аргументы, которые хранятся в функции следующим образом:
function foo() {
if( get_option( 'option_1' ) ) {
$argument_1 = 'this one';
} else {
$argument_1 = 'that one';
}
if( get_option( 'option_2' ) ) {
$argument_2 = 'this two';
} else {
$argument_1 = 'that two';
}
}
Теперь мне нужно вызвать эти аргументы в разных файлах следующим образом (псевдокод):
<?php echo foo( $argument_1 ); ?>
<?php echo foo( $argument_2 ); ?>
Как я могу это сделать? Благодарю.
Вы думаете об этом задом наперед. foo()
не выставить свои переменные чтобы увидеть другой код, они полностью заключены в его область видимости. Вместо этого функция может вернуть значение (который может быть из одной из его внутренних переменных).
Когда ты взывать эта функция, вы должны предоставить ему все, что нужно, чтобы определить, что возвращать. Так что вместо этого у вас может быть такая структура:
function foo($option) {
if( $option == 'option_1' ) {
return 'this one';
} else {
return 'that one';
}
}
Затем, когда вы вызываете эту функцию, вы предоставляете ей информацию, необходимую для выполнения вычисления:
<?php echo foo( get_option( 'option_1' ) ); ?>
Идея состоит в том, что весь вызов функции со значениями, передаваемыми ей, оценивается как одно результирующее значение. Так foo( get_option( 'option_1' ) )
логически идентичен this one
когда он выполняется.
Так ты не спрашиваешь foo
«Какое значение переменной у вас есть?» Инкапсуляция означает, что потребляющий код не знает и не заботится о внутренностях foo
, Вместо этого вы спрашиваете foo
«Вот что вам подсчитать, каков результат?»
Вы имеете в виду аргумент? С аргументом функции (иногда вызывается параметр) вы можете передать переменную или значение в функцию и использовать ее как локальную переменную:
function foo($localVariableName)
{
echo $localVariableName . $localVariableName;
}
foo('abc'); // echoes abcabc
Вы также можете иметь больше:
function foo($parameter1, $parameter2)
{
echo "$parameter1 - $parameter2";
}
$a = "abc";
$x = "def";
foo($a, $x); // echoes abc - def
foo($x, $a); // echoes def - abc
Есть и другие возможности, так что взгляните на PHP.net — Аргументы функции.