初学者的PHP类继承

时间:2011-03-04 22:11:07

标签: php class

class User{
    public $company_name;
}

class Employer extends User{
    public $fname;
    public $sname;
}

这是我创建的test.php。我已经包含了类文件。

$employer = new Employer();
$user = new User();
$employer->company_name = "Company name is ";
echo $user->company_name;

当我打印名称没有任何反应时,请让我知道我的代码有什么问题。

5 个答案:

答案 0 :(得分:15)

您的Employer课程扩展了User课程,但在您创建$user$employer个对象时,它们是独立的实体且不相关。

想象你的对象:

$employer = new Employer();
// You now have $employer object with the following properties:
// $employer->company_name;
// $employer->fname;
// $employer->sname;

$user = new User();
// You now have $user object with the following properties:
// $user->company_name;

$employer->company_name = "Company name is ";
// You now have $employer object with the following properties:
// $employer->company_name = 'Company name is ';
// $employer->fname;
// $employer->sname;

echo $user->company_name;
// You currently have $user object with the following properties:
// $user->company_name;  /* no value to echo! */

如果要使用继承的属性,它的工作方式更像:

class User{
    public $company_name;

    function PrintCompanyName(){
        echo 'My company name is ' . $this->company_name;
    }
}

class Employer extends User{
    public $fname;
    public $sname;
}

$employer = new Employer();
$employer->company_name = 'Rasta Pasta';
$employer->PrintCompanyName();  //echoes 'My company name is Rasta Pasta.'

答案 1 :(得分:4)

请勿将您的变量$user$employer与类混淆。 $user是User类的实例,$employer是Employer类的实例,但它们是单独的变量。

答案 2 :(得分:3)

您从未设置$user->company_name

echo $employer->company_name;

答案 3 :(得分:3)

您没有为对象$ user的$company_name分配内容;只有$雇主。

答案 4 :(得分:2)

你必须回应

 $employer->company_name;

或设置

 $user->company_name

达到某种价值。

您不必创建父类的实例来使用子类。在这种情况下,$雇主从User类继承company_name。

相关问题