2014-09-26 128 views
-4

我需要能够调用存储在一个函数如下不同的参数:如何从PHP中的相同函数调用不同的参数?

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

那么问题是什么?你在正确的轨道上。 – 2014-09-26 17:46:19

+0

@Jay Blanchard对不起,请参阅最新的问题。 – 2014-09-26 17:47:22

+0

难道你不能把它分成两个功能?一个返回$ variable_1,另一个返回$ variable_2 – DaveS 2014-09-26 17:49:37

回答

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“这是你要计算的东西,结果是什么?”

+0

接受!最好! – 2014-09-26 18:15:59

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

+0

谢谢,但实际上我会使用超过20个参数,所以这个函数foo($ parameter1,$ parameter2,$ parameter2,...... )'看起来不太好我猜...任何建议? – 2014-09-26 17:55:25

+0

@LiviuCostache:在这一点上,你有几个选项,根据问题中过分简化的例子,没有一个可以特别推荐。如果函数做了很多不同的事情,那么很可能它应该被分离成不同的函数。如果它根据许多不同的信息完成一件复杂的事情,那么这些不同的信息应该可以合并到一个对象中,并且该对象完整地传递给该函数。 (那个对象可以有内部逻辑来维护这些多个值彼此之间的关系。) – David 2014-09-26 18:18:13

相关问题