-1

我有下一个代码。为什么字段 userId 在 InheritUser 中不可见?

class User{
    private $userId;

function User($userId){
    $this->userId = $userId;
}

    function getId(){
        return $this->userId;
    }
}

class InhreritUser extends User{
    function someFunc(){
            echo $this->userId; // nothing
    }
}

someFunc 什么也不返回:

$inheritUser = new InheritUser(1);
$inheritUser->someFunc();
4

3 回答 3

3

这就是private关键字的重点。如果你使用protected这将工作。

见: http: //php.net/language.oop5.visibility

此外,如果您没有关闭 PHP 中的错误(开发期间的坏主意),那么该代码会引发错误。

于 2013-01-16T21:38:39.683 回答
1

http://php.net/manual/en/language.oop5.visibility.php

需要保护类成员才能对子类可见。私有意味着子类将无法看到它。

protected $userId;
于 2013-01-16T21:38:24.060 回答
1

它是私人的。改为保护它。

私有字段只能由类访问。受保护的字段也可用于子类。

于 2013-01-16T21:38:28.973 回答