什么是PHP中的保护模式

时间:2010-11-14 16:45:15

标签: php

我受保护的只有一个继承类知道,

在此代码中,受保护的工作在第三类

我的代码是真的还是错误,

<?php
class sample_visibility{

    public function my_first_public(){
        $MSG = "THIS IS MY PUBLIC FUNCTION ";
        return $MSG;
    }
    private function my_first_private(){
        $MSG = "THIS IS MY PRIVATE FUNCTION ";
        return $MSG;
    }
    protected function my_first_protected(){
        $MSG = "THIS IS MY PROTECTED FUNCTION ";
        return $MSG;
    }
}
class sample_visibilit2  extends sample_visibility{
    public function my_first_child_public(){

        $MSG = "THIS IS MY CHILD  PUBLIC FUNCTION ".$this->my_first_protected();
        return $MSG;
    }
}

class sample_visibilit3  extends sample_visibility{
    public function my_first_child_public_3(){

        $MSG = "THIS IS MY CHILD  PUBLIC FUNCTION ".$this->my_first_protected();
        return $MSG;
    }
}
$OBJ_CLASS_1 = new sample_visibility();
echo $OBJ_CLASS_1->my_first_public();

$OBJ_CLASS_3 = new sample_visibilit3();
echo $OBJ_CLASS_3->my_first_child_public_3();
?>

2 个答案:

答案 0 :(得分:3)

您的代码中没有错误。受保护的元素(成员或功能)可供儿童,孙子女(伟大的) - 孙子孙女使用。任何数量的遗产都可以。他们只受到不相关类别的“保护”。

public - accessible anywhere
protected - derived classes only (any number of inheritances)
private - only accessible internally

答案 1 :(得分:0)

虽然您的问题不是很明确,但您的代码是正确的并且可以正常运行。

在课程sample_visibilit2sample_visibilit3中,您可以访问my_first_protected(),因为这两个类都是sample_visibility的子类。