-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 に答える