php中的私有说明符

php中的私有说明符,php,class,Php,Class,据我所知,我们不能在继承阶级中使用私有财产。那这是什么,它还在工作吗 <?php class oops1 { private $text; function __construct($txt) { $this->text=$txt; } function disply() { echo 'text:'.$this->text; } } class abc extends oop

据我所知,我们不能在继承阶级中使用私有财产。那这是什么,它还在工作吗

<?php

class oops1 
{
    private $text;

    function __construct($txt) 
    {
        $this->text=$txt;
    }

    function disply()
    {
        echo 'text:'.$this->text;

    }
}

class abc extends oops1
{
    public $headertext;

    function __construct($ht,$txt) 
    {
        $this->headertext=$ht;
        $this->text=$txt;
    }

    function disp2()
    {
        echo "Header Text: $this->headertext";
        echo "<br>Text: $this->text";
    } 
}

$obj=new abc("g", "h"); 
$obj->disp2(); 

因为它正在此行中创建类属性:

$this->text=$txt;
如果将其取出并在基类中初始化,如下所示:

private $text = "test";

然后你尝试访问它,你将无法在PHP中访问它,如果你试图设置一个不存在的类属性,那么它将被创建为一个公共属性。您的假设是正确的,即子类可能无法访问私有属性


如果此处的目的是让您的子类能够访问其父类的属性,而无需在类结构外部访问该属性,那么在执行
$this->text=$txt
在abc类中,您实际上创建了一个名为
$text
的属性,该属性属于abc类,因此您可以在abc类中直接访问它,因为它属于该类。如果要将
$this->text=$txt
分配给类oops1,则必须调用
parent::\uu cocontract()
。平心而论,我第一次看到它时,您可以动态创建类属性有点奇怪。但当我通过$this->r=text阅读时,我们访问当前的类属性…然后它如何创建属性…我如何解决it@Rizier123他不明白为什么要“在飞行中”创造财产将变量指定给尚未声明的属性时。我可以理解为什么他会对这个问题感到困惑。@Davinder你可以随时在PHP对象上创建新属性<代码>$this->foo='bar'
可以随时随地工作。@Daviderkumar如果我理解正确:如果基类中的属性存在,您可以这样访问它:
$this->foo
如果您的子类中有它,那么您将覆盖基类,如果它不存在,并且您分配了一些内容,那么您创建了一个属性I只想访问基类属性,该属性给出错误而不是创建属性:(