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

Posted

技术标签:

【中文标题】PHP定义一个变量,如果它没有传递给一个函数【英文标题】:PHP define a variable if it's not passed to a function 【发布时间】:2014-02-11 00:59:14 【问题描述】:

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

def fun(con = predefined):

我尝试了以下方法无济于事:

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

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

【问题讨论】:

检查this @DrixsonOseña 该死的,显然我的关键字已关闭。我考虑在函数的开头设置它,但来自 python;这对我来说看起来太乱了,哈哈。我将把这个问题留给任何进行特定搜索的人。 更具体地说,如果可以将 $con 的值作为选项传递给函数,我会更喜欢;看来我得想办法解决了。 【参考方案1】:

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

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

【讨论】:

感谢您的精彩解释,它可以发布了!但遗憾的是它与我的问题并不完全兼容。 这是一个如何实现此功能的小示例。在此基础上,您可以开发您的逻辑【参考方案2】:

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

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

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

【讨论】:

这个解决方案效果很好,虽然你让我担心。有没有其他方法可以做到这一点?我的变量名放弃了,是吧?我宁愿不必每次都重新定义它,所以我一直在寻找一种方法来无限期地定义它;全局命名空间看起来是我唯一的解决方案。 你熟悉类吗?您可以创建一个维护连接的数据库类,并且您的类方法可以使用类似 $this->con 的方式访问连接 这真是个好主意。我正在逐渐从 python 过渡,所以我了解类“可能”在 PHP 中是如何工作的。看起来像是一个研究领域,谢谢你的提示!【参考方案3】:

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

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

【讨论】:

这远远超出了我对 PHP LOL 的理解,但它和其他解决方案一样有效;非常感谢。 现在是不是更容易理解了?

以上是关于PHP定义一个变量,如果它没有传递给一个函数的主要内容,如果未能解决你的问题,请参考以下文章

PHP:获取传递的变量的类名?

如何将变量结构类型传递给 C 中的函数

将字符串从php传递给js函数

将一个函数中创建的 PHP 变量传递给另一个函数

如何将php变量传递给twig模板

将PHP变量传递给jQuery函数