php中对属性或方法的访问控制的介绍(代码示例)

来源:转载 发布时间:2018-10-26 17:06:58 阅读量:868

本篇文章给大家带来的内容是关于php中对属性或方法的访问控制的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

PHP中对属性或方法的访问控制,是通过在前面添加关键字public(公有)、protected(受保护)或 private(私有)来实现的。被定义为public的类成员可以在任何地方被访问,被定义为protected的类成员则可以被其自身以及其子类和父类访问。被定义为private的类成员则只能被其定义所在的类访问。

类属性必须定义为public、protected或private。如果用var定义,则被视为public。子类可以修改基类public和protected的属性的值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

class A{

    var $a="a";

    protected $b="b";

    private $c="c";

     

    function printVar(){

        echo $this->a.";".$this->b.";".$this->c.";"."\n";

    }

}

class B extends A{

    public $a="aa";

    protected $b="bb";

    private $c="cc";

}

$a=new A();

$a->printVar();

$b=new B();

$b->printVar();

?>

类的必须定义为public、protected或private。如果未指定则视为public。子类可以覆盖基类public和protected的函数。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<?php

class A{

    public function fa(){

        echo "A->fa\n";

    }

    protected function fb(){

        echo "A->fb\n";

    }

    private function fc(){

        echo "A->fc\n";

    }

    function showFoo(){

        $this->fa();

        $this->fb();

        $this->fc();

    }

}

class B extends A{

    function fa(){

        echo "B->fa\n";

    }

    protected function fb(){

        echo "B->fb\n";

    }

    private function fc(){

        echo "B->fc\n";

    }

}

$a=new A();

$a->showFoo();

$b=new B();

$b->showFoo();

?>

同一个类的对象,即使不是同一个实例也可以互相访问对方的私有与受保护成员,因为这些对象的内部具体实现的细节都是已知的。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<?php

class A

{

    private $a;

 

    public function __construct($a)

    {

        $this->a = $a;

    }

 

    private function fa()

    {

        echo 'private method fa.';

    }

 

    public function foo(A $other,$v)

    {

        $other->a = $v;

        var_dump($other->a);

        $other->fa();

    }

}

 

$a = new A('a');

$aa=new A('aa');

$a->foo($aa,'newA');

?>


标签: PHP
分享:
评论:
你还没有登录,请先