当我们用null初始化它时$mysettings
如何才能成立?这是一种防止SQL注入的方法吗?如果您能解释下面的代码,将不胜感激。
public function __construct($mysettings = null)
{
$this->shop_version = Mage::getVersion();
$this->moduleversion = Mage::getConfig()->getModuleConfig('Messagemodule')->version;
$this->apppid = Mage::getStoreConfig('magemessage/appId');
if (empty($this->apppid)) {
$this->apppid = 'no-appId';
}
$this->connectortype = ($settingvariable = Mage::getStoreConfig('Messagemodule/magemessage/connector', 0)) ? $settingvariable : 'auto';
if ($mysettings) {
$this->connectortype = $mysettings;
}
}
答案 0 :(得分:2)
当您在PHP方法(包括构造函数)中指定默认值时,它就是 - 默认。
所以,如果你有
class Foo {
public function __construct($mysettings = null) {
...
}
}
然后你提供了两种构建类的方法。你可以打电话
$foo = new Foo();
没有参数,在这种情况下$mysettings
将初始化为null。或者你可以打电话
$settings = array('key' => 'value');
$foo = new Foo($settings);
在这种情况下,$settings
数组将被传递到新实例中。这样做的好处是,您不需要为不需要自定义设置的新实例提供空数组;你可以省略这个论点。
类中的检查if ($mysettings)...
确保仅在提供设置时才使用这些设置 - PHP if
语句可以在许多不同类型上运行,而不仅仅是布尔值。在这种情况下,如果变量为null,则条件将计算为false。
答案 1 :(得分:1)
看一下这段代码:
<?php
function required($something)
{
echo $something;
}
required();
它会引发致命错误,因为$something
是必需的,但未通过。 https://3v4l.org/fIKB9
现在看这里:
<?php
function required($something = 'hello')
{
echo $something;
}
required();
required(' R.Toward');
哪个输出Hello R.Toward
https://3v4l.org/nQF8r
所以从本质上讲,它是一种设置默认可选值的方法。