• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于php访问控制的有关问题

php 搞代码 3年前 (2022-01-24) 21次浏览 已收录 0个评论

关于php访问控制的问题

<br />class MyClass{<br />    public $public       = 'public';<br />    protected $protected = 'protected';<br />    private  $private    = 'private';<br />    <br />    function printHello(){<br />        echo $this->public;<br />        echo $this->protected;<br />        echo $this->private . "<br />";<br />    }<br />}<br /><br />$obj = <strong>*本文来@源gao@daima#com搞(%代@#码@网2</strong><pre>搞代gaodaima码

new MyClass();
$obj->printHello();

class MyClass2 extends MyClass{

function printHello(){
echo $this->public;
echo $this->protected;
echo $this->private . “
“;
}
}

$obj2 = new MyClass2();
$obj2->printHello(); // 输出 Public、Protected 和 Undefined
class MyClass3 extends MyClass{

}

$obj3 = new MyClass3();
$obj3->printHello(); // 输出 Public、Protected 和 private

为什么$obj3->printHello的private有值,不是private 定义的类成员则只能被其所在类访问。
——解决思路———————-

MyClass2 中有printHello 重写了 MyClass中的printHello。
而MyClass2 调用 MyClass的$private为undefined 因为MyClass2的printHello方法没有权限读取MyClass的$privite

MyClass3 中没有printHello,所以$obj3->printHello实际上是调用MyClass的printHello
MyClass printHello方法读取 Myclass $private有权限。所以 $obj3->printHello可以显示出MyClass 的 $private

——解决思路———————-
楼上正解!!!!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于php访问控制的有关问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址