PHP定义一个变量,如果它没有传递给函数

时间:2014-02-11 00:59:14

标签: php function variables global-variables default

如何在PHP中为函数设置默认变量?在python中,它看起来像这样:

def fun(con = predefined):

我尝试过以下无效:

function fun($con = $GLOBALS['con']){}

在这种情况下,正如您所看到的,我想将值设置为全局变量的定义。

3 个答案:

答案 0 :(得分:2)

这是一个非常简单的例子:

 <?php
 function makecoffee($type = "cappuccino")
 {
     return "Making a cup of $type.\n";
 }
 echo makecoffee();
 echo makecoffee(null);
 echo makecoffee("espresso");
 ?>

以上示例将输出:

  

Making a cup of cappuccino.
  Making a cup of .
  Making a cup of espresso.

答案 1 :(得分:1)

看起来您的问题是您尝试从全局设置默认值。 PHP可能不喜欢这个。你可以这样绕过它:

function fun($con = null){
    $con or $con = $GLOBALS['con'];
}

我个人认为这有点好事。看起来您想要从全局资源获取数据库连接。我不认为这应该如何做,但这个答案将允许$ con从全局设置,如果没有传递给函数。或者允许它在传递时使用。

答案 2 :(得分:1)

我们构建一个小类以静态方式使用全局变量

class globy{
    static public function set($name, $value) { $GLOBALS[$name] = $value; }
    static public function get($name)         { return $GLOBALS[$name]; }
}

那么你可以这样做

function fun($con=globy::get('con')){}

或者你可以这样做(不是你的问题)

function fun($con=globy::set('con','value_of_con')){}