繁体   English   中英

如果未传递给函数,则PHP定义变量

[英]PHP define a variable if it's not passed to a function

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

def fun(con = predefined):

我尝试了以下无济于事:

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

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

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

 <?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.

看来您的问题是您试图从全局设置默认值。 PHP可能不喜欢这样。 您可以这样避免:

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

我个人认为这是骗人的。 看来您想从全局资源获取数据库连接。 我不认为这应该这样做,但是如果没有传递给函数,此答案将允许从全局设置$ con。 或者允许它通过后使用。

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

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')){}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM