我需要能够调用存储在函数中的不同参数,如下所示:
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 ); ?>
我可以这样做吗?感谢。
答案 0 :(得分: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
“这里有你可以计算的东西,结果是什么?”
答案 1 :(得分:1)
你的意思是参数?使用函数参数(有时称为参数),您可以将变量或值传递给函数并将其用作局部变量:
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 - Function arguments。