PHP对象继承结果空白网页

时间:2017-10-18 03:45:51

标签: php object inheritance parent-child

我有一个父对象“Person”,然后是一个子对象“Student”但是当我尝试测试出来的孩子“test_Student.php”时,没有内部错误500但只是空白屏幕,任何想法为什么?我以为我应该在屏幕上至少有“乔治”。

以下是我遇到问题的代码。 Person.php:

class Person
{
    protected $firstName;
    protected $surName; 
    public function __construct(string $f, string $l){
        $this->getFirstName($f);
        $this->getSurName($l);
    }
    public function getFirstName(): string{
        return $this->firstName;
    }
    public function setFirstName(string $value){
        $this->firstName = $value;
    }
    public function getSurName(): string{
        return $this->surName;
    }
    public function setSurName(string $value){
        $this->surName = $value;
    }
}               

Student.php

class Student extends Person
{
    protected $studentID;
    public function __construct(int $i,string $f, string $l)
    {
        parent::__construct($f,$l);
        $this->studentID = $i;
    }
    public function getStudentInfo(): string
    {
        return "Student Info: ".$this->studentID;   
    }
}

test_Student.php:

<?php
require("Student.php");
try
{
    $stud = new Student(1,"George","Orwell");
    echo $stud->getFirstName();
}
catch(Exception $e)
{
   echo "v5: ".$e->getMessage();
}
catch(Error $e)
{
    echo "v7: ".$e->getMessage();
}
?>

非常感谢!

1 个答案:

答案 0 :(得分:0)

Person的构造函数是调用getter而不是setter。将其更改为:

public function __construct(string $f, string $l){
    $this->setFirstName($f);
    $this->setSurName($l);
}

这是否是唯一的问题,我不确定(例如Student可能由于未事先加载Person.php而无法实例化。您应该检查错误日志以查看其中的内容,因为这将为您提供有关问题的信息。您可以通过在error_log文件和/或php.ini文件中查找文本.htaccess来查找错误日志位置。此外,您可以检查代码是否有对ini_set("error_log", "/path/to/error.log");

的任何引用