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定义一个变量,如果它没有传递给一个函数的主要内容,如果未能解决你的问题,请参考以下文章