不应在Child类中访问PHP私有属性

时间:2017-01-30 10:49:12

标签: php

我有一个愚蠢的怀疑 我在用户类中将用户名属性设置为私有 但根据规则,私人财产不应该被访问 在Child类中或继承和在类之外但它正在发生 在我的代码中。我只是想知道我做错了什么。

<?php
    class User{
        private $username;
    }
  class UserRepository extends User{
        public function get(){
            return  $this->username;
           //this should give error can't access private property
        }
        public function set($username){
         $this->username=$username; 
         //this should give error can't access private property
        }
    }

    $UserReposetry =new UserRepository;
    $UserReposetry->username='daulat';//this should give error.
    echo $UserReposetry->username;//this should give error.

它应该无法正常工作。

1 个答案:

答案 0 :(得分:1)

没办法, 在这里查看代码并查看结果(错误)

<?php
class User{
    private $username="aaa";
}
class UserRepository extends User{
    public function get(){
        return  $this->username;
    }

}
$UserReposetry =new UserRepository;
echo $UserReposetry->get();//this should give error.

输出:
注意:未定义的属性:第7行的C:\ Users ...........index.php中的UserRepository::$username
(要查看此通知,您必须将错误报告设置为E_ALL)
第7行表示return $this->username;,尝试使用:: parent关键字

在您的代码中:您只是设置一个新变量。所以不要误解代码正在使用私有成员。