我正在尝试这样做(产生意外的T_VARIABLE错误):

public function createShipment($startZip, $endZip, $weight = 
$this->getDefaultWeight()){}

因为我使用的对象有一个"defaultWeight"参数,如果你没有指定一个重量,所有新的货物都会得到,我不想在那里放一个幻数。 我无法将defaultWeight放入货件本身,因为它从货件组更改为货件组。 有没有比以下更好的方法呢?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}

===============>>#1 票数:13 已采纳

这不是更好:

public function createShipment($startZip, $endZip, $weight=null){
    $weight = !$weight ? $this->getDefaultWeight() : $weight;
}

// or...

public function createShipment($startZip, $endZip, $weight=null){
    if ( !$weight )
        $weight = $this->getDefaultWeight();
}

===============>>#2 票数:6

使用布尔OR运算符的巧妙技巧:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}

===============>>#3 票数:1

这将允许您传递0的权重并仍然正常工作。 注意===运算符,它检查重量是否与值和类型中的“null”匹配(与==相反,这只是值,因此0 == null == false)。

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}

===============>>#4 票数:1

您可以使用静态类成员来保存默认值:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}

===============>>#5 票数:0

如果您使用PHP 7,可以改进Kevin的答案:

public function createShipment($startZip, $endZip, $weight=null){
    $weight = $weight ?: $this->getDefaultWeight();
}

  ask by cmcculloh translate from so

未解决问题?本站智能推荐:

1回复

mysql_fetch_row()期望参数1为资源,在第34行的/home/---/---/register.php中给出布尔值[重复]

这个问题已经在这里有了答案: mysql_fetch_array()/ mysql_fetch_assoc()/ mysql_fetch_row()/ mysql_num_rows等…期望参数1为资源或结果 32答案 注意:我必须说有很多类似的问题。 但是我无法
1回复

'NoneType'对象没有属性'add_summary'

我在使用tensorboardX可视化模型的权重和偏差时遇到了麻烦。 这是我的模型(无论如何都很简单): 这是我在pytorch中得到错误的地方 错误是 但我确实必须看到直方图,其中权重卡在次优位置。 所以我稍微修改了代码以逐步进行 繁荣! 仍然是同样的错误
3回复

使用带有两个int参数而不是int的void方法?

我使用int方法运行该程序没有问题; 但是我希望能够学习如何执行void方法。 我知道return声明是不是在必要的void ,并为void两个int参数。 在我的书中,它说参数应该写成(int a, int b) 。 但是,在我的第16和17行代码中 我收到错误的inc
5回复

转换varchar值时转换失败

当我尝试运行此命令时,它给我以下错误消息: 将varchar值'category_id'转换为数据类型int时,转换失败。 这是我的SQL和参数代码,我认为应该可以,但不能。 在检查完这段代码后,我通过阅读器运行它,这就是上面显示错误消息的地方。 一直问老师,和我班上
3回复

使用-Xmx内存参数可能会导致错误“无法创建Java虚拟机”

我创建了一个java应用程序,许多用户使用它。 我已将应用程序捆绑在exe文件中,使用此命令运行该文件: java -jar -Xms256m -Xmx1024m MyApplication.jar 我正在使用这个高“-Xmx”值,因为有时应用程序可能需要高内存才能工作,否则
1回复

使用按引用传递和按值传递参数的故障执行程序

当我尝试执行以下程序时,我不断收到错误消息,我不知道我的函数之一或内容(编写方式)是否有问题。 我知道代码中的第129行有问题,但是每当我尝试进行更改时,都会出现其他语法错误。 基本上,我的语法有问题,并且由于我正在学习调试,因此很难。 输出应如下所示:
1回复

PHP-参数默认值

我有一个带有多个参数的函数。 有时,用户可能需要指定例如第一,第二和第四,而不是第三。 在JavaScript中,我们可以轻松地使用匿名对象作为整个函数的单个参数来做到这一点: 如果我想在PHP中做到这一点,我可以使用关联数组来扮演与上述函数中的匿名对象“ args”相同的角色:
6回复

PHP函数,变量作为参数的默认值

默认情况下,PHP函数使用$_GET变量。 有时在未设置$_GET的情况下调用此函数。 在这种情况下,我将所需的变量定义为参数,如: actionOne(234) 为了得到一个抽象代码,我试过这样的事情: 这会导致错误 : 解析错误:语法错误,意外T_VARIABLE
1回复

字段“ xxx”没有默认值

我可以在使用mysql 5.7.19的WAMP服务器上看到字段'xxx'没有默认值问题 我在my.ini中启用了sql-mode =“”并重新启动了服务器,但存在相同的问题。 谁能帮我吗?? 我该如何解决? 谢谢
1回复

PHP仅提供多个默认值中的一个特定参数

如图所示,如何省略具有默认值而仅影响第二个参数的第一个参数? 我试过$x->funkcja(NULL, 'other value'); $x->funkcja(, 'other value'); 也行不通。 如何实现呢?