[英]Cannot access private property
我的以下代码有问题,我正在尝试打印学生的数据,但出现以下错误:
致命错误:未捕获错误:无法访问私有财产秘书:: $学生
如果我将属性设置为公共属性,则它可以正常工作。
class Student {
private $name;
public function __construct($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
class Secretary{
private $students = array();
public function printStudents(){
foreach($this->students as $key=>$value){
echo $value->name . " ";
}
}
}
$secretary = new Secretary();
// Add students.
$student = new student("Student1");
array_push($secretary->students,$student);
$secretary->printStudents();
为此,您需要一个setter函数。 您不能直接访问私有变量。
在班级秘书中,您需要一个函数AddStudent(Student $ students);
该函数如下所示:
public function AddStudent(Student $student) {
if (!$this->students->contains($student)) {
$this->students[] = $student;
}
return $this;
}
之后,您可以使用函数“ printStudents”打印所有学生。
您不能访问超出其自身范围的类的私有属性。 要实现所需的功能,请考虑采用如下新方法:
public function addStudent(Student $s): Secretary
{
array_push($this->students, $s);
return $this;
}
然后,您可以将新学生添加到秘书中。
$s = new Secretary();
$s->addStudent(new Student('Foo'));
$s->printStudents();
您可以观看它的实时演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.