我似乎能够直接从PHP中的实例为类创建属性?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了我似乎能够直接从PHP中的实例为类创建属性?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在下面的程序中最后一个语句echo $objb-> test;不应该输出任何值.第二个语句应该抛出一个错误,说无法访问私有成员.但是,我在运行程序时得到输出20.

由于PHP是松散类型的语言,因此$objb在类外创建一个新变量…

<?PHP
    error_reporting(E_ALL);
    class A {
        public $a;
        PRivate $test;

        protected function sayhello(){
            echo "<p>hello class A</p>";
        }

    }//end of class A

    class B extends A {
        //private $c;
        public function sayhellonew(){
            $this->sayhello();
            echo "<p>hello class B</p>";
        }
    }//end of class B

    $objb = new B();
    $objb->sayhellonew();

    $objb->a = 10;
    echo $objb->a;

    echo "<br>";

    $objb->test = 20;
    echo $objb->test;
    ?>

产量
我得到输出20为什么它工作?

由于$test属性是A的私有属性,因此在B的范围内不可见.这意味着B可以拥有自己的名为$test的属性.当您指定objb-> test = 20时,这就是您要设置的内容.

以下显示您实际上没有设置私有变量:

class A {
    public $a;
    private $test = 10;

    protected function sayhello(){
        echo "<p>hello class A</p>";
    }
    public function showTestA() {
        echo "Test in A = " . $this->test . '<br>';
    }

}//end of class A

class B extends A {
    //private $c;
    public function sayhellonew(){
        $this->sayhello();
        echo "<p>hello class B</p>";
    }
    public function showTestB() {
        echo "Test in B = " . $this->test . '<br>';
    }
}//end of class B

$objb = new B();
$objb->test = 20;
$objb->showTestA();
$objb->showTestB();

这将显示

Test in A = 10
Test in B = 20

脚本宝典总结

以上是脚本宝典为你收集整理的我似乎能够直接从PHP中的实例为类创建属性?全部内容,希望文章能够帮你解决我似乎能够直接从PHP中的实例为类创建属性?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。