PHP学习之外部调用类的私有属性-php教程

资源魔 67 0
本篇文章次要讲述的是内部挪用类的公有属性,具备肯定的参考代价,感兴味的冤家能够理解一下,心愿可以帮到你。

内部挪用类的公有属性

先来理解一下PHP类中的__get以及__set函数
当试图猎取一个不成达属性时,类会主动挪用__get函数。
当试图设置一个不成达属性时,类会主动挪用__set函数。

起首,来看一下__get函数,先来猎取一个可达属性尝尝:

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo 'you can get '.$name;
        }
    }
    $dy = new A();
    echo $dy->a;
?>

看一下它的前往:

1

不成绩,不挪用__get函数,如今我来拜访一个公有的不成达属性:

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo 'you can get '.$name;
        }
    }
    $dy = new A();
    echo $dy->b;
?>

会发现:

you can get b

阐明这里挪用了__get函数,我再来看一下__set函数,一样也是先应用可达的public属性:

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
            echo 'you can get '.$name.$val;
        }
    }
    $dy = new A();
    $dy->a = 1;
    echo $dy->a;
?>

看一下输入:

1

应用胜利,不成绩,接着咱们来应用公有属性:

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
            echo 'you can get '.$name.$val;
        }
    }
    $dy = new A();
    $dy->b = 1;
    echo $dy->b;
?>

这时候看到:

you can get b1

PHP Fatal error:  Cannot access private property A::$b in /usercode/file.php on line 11

这里挪用了__set函数并提醒咱们不克不及应用类的公有属性。
如今来经过__set函数完成内部应用公有属性:

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
                $this->$name=$val;
        }
        function B(){
            echo $this->b;
        }
    }
    $dy = new A();
    $dy->b = 1;
    $dy->B();
?>

看一下输入:

1

阐明应用胜利。

相干教程:PHP视频教程

以上就是PHP学习以外部挪用类的公有属性的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 外部调用类

抱歉,评论功能暂时关闭!