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
更改属性指定以删除箭头运算符后的
$
。