Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 构造函数不设置成员变量,但声明新的_Php_Class_Oop - Fatal编程技术网

Php 构造函数不设置成员变量,但声明新的

Php 构造函数不设置成员变量,但声明新的,php,class,oop,Php,Class,Oop,我正在尝试基于外部文本文件构建一个包含对象的数组。 但是,类的构造函数不设置类的成员变量。 相反,它用值的名称声明新变量 我做错了什么 输出 Array ( [0] => slgDate Object ( [date] => [day] => [info] => [13.01.2020] => 13.01.2020 [

我正在尝试基于外部文本文件构建一个包含对象的数组。 但是,类的构造函数不设置类的成员变量。 相反,它用值的名称声明新变量

我做错了什么

输出

Array
(
    [0] => slgDate Object
        (
            [date] => 
            [day] => 
            [info] => 
            [13.01.2020] => 13.01.2020
            [Mon] => Mon
            [] => 
        )

    [1] => slgDate Object
        (
            [date] => 
            [day] => 
            [info] => 
            [10.02.2020] => 10.02.2020
            [Mon] => Mon
            [] => 
        )
//...
)
代码

class slgDate {
    public $date, $day, $info;

    function __construct($date, $day, $info = "Training") {
        $this->$date = $date;
        $this->$day = $day;
        $this->$info = $info;
    }
}

function getDates($f) {

    $file = fopen($f, "r");
    $dates = [];
    while (!feof($file)) {
        $fileGet = trim(fgets($file), "\r\n");
        $expld = explode(';', $fileGet);
        if (($date = strtotime($expld[0])) !== false) {
            $info = $expld[1];
            $strDate = date('d.m.Y', $date);
            $strDay = date('D', $date);
            $newDate = new slgDate($strDate, $strDay, $info);
            array_push($dates, $newDate);
        }
    }
    return $dates;
}

您必须在不使用前导的
$
的情况下访问成员属性:

这意味着:

$this->date
而不是

$this->$date

更改属性指定以删除箭头运算符后的
$