如何在抽象类的构造函数中设置默认值?

时间:2020-07-13 07:03:57

标签: php

我有一个抽象类,其中包含这样的__construct方法

SEARCH TABLE csv USING COVERING INDEX iin_idx (iin=?)
USING INDEX sqlite_autoindex_input_1 FOR IN-OPERATOR

然后在我的具体课程中,我扩展了抽象模型

abstract class Model
{
    protected $attributes = [];

    public function __construct(array $attributes = []) {
        $this->$attributes = $attributes;
    }
}

当我将属性转储到构造函数中时,我得到一个空数组,但是如果删除构造函数参数的默认值,则Pong模型具有属性。挑战在于,我希望能够构造具有默认值和没有默认值的具体类

class Pong extends Model
{
    
}

1 个答案:

答案 0 :(得分:-1)

尝试一下:

我制作了$attributes public,以显示结果。

请注意问号??

<?php

class Model
{
    public $attributes = [];

    public function __construct(array $attr = []) {
        $this->attributes['msg'] = $attr['msg'] ?? "default";
        $this->attributes['someValue'] = $attr['someValue'] ?? 'default';
    }
}

class Pong extends Model
{
    
}

$pong = new Pong();
print_r($pong->attributes);

使用上面看到的code玩!