Rumah pembangunan bahagian belakang tutorial php 详细解读PHP类的封装_PHP教程

详细解读PHP类的封装_PHP教程

Jul 15, 2016 pm 01:33 PM
php public Skop wujud enkapsulasi harta benda kaedah daripada baik hati Tafsiran terperinci lalai

public:方法或者属性在任何作用域都可以访问到,而且这是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。

protected:方法或者属性只能从类或者继承类的一个成员中访问到。

private:方法或者属性只能从类的一个成员中访问到,而且无法从继承类的成员中访问到。经过private标记的方法或者属性可以在继承类中重新定义。每一个类只能看到它自己定义的私有方法。

这三个修饰符从作用范围上来讲应该像这样从大到小排序:

public→protected→private之所以说是在作用范围上是因为类跟我们之前的函数一样,把一些属性和方法进行了PHP类的封装。这个封装就决定了数据的“可见性”了,这样我们在类的外面不能够随意修改所定义的属性和方法而只能够进行调用,这就是封装的好处,同时也提高了安全性。为了说明这几个修饰符的作用,请看如下代码:

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

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

<ol class="dp-xml">

<li class="alt"><span><span class="tag"><span> ?php   </span></span></span></li>

<li><span>class myClass{   </span></li>

<li class="alt">

<span>public $</span><span class="attribute">public</span><span>=</span><span class="attribute-value">"Public"</span><span>;   </span>

</li>

<li>

<span>protected $</span><span class="attribute">protected</span><span>=</span><span class="attribute-value">"Protected"</span><span>;   </span>

</li>

<li class="alt">

<span>private $</span><span class="attribute">private</span><span>=</span><span class="attribute-value">"Private"</span><span>;   </span>

</li>

<li><span>function say_Hello(){   </span></li>

<li class="alt"><span>//我现在什么也不做,等下再告诉你   </span></li>

<li><span>}   </span></li>

<li class="alt"><span>}   </span></li>

<li>

<span>$</span><span class="attribute">obj</span><span>=</span><span class="attribute-value">new</span><span> myClass();   </span>

</li>

<li class="alt">

<span>echo $obj-</span><span class="tag">&gt;</span><span>public;   </span>

</li>

<li>

<span>//echo $obj-</span><span class="tag">&gt;</span><span>protected;   </span>

</li>

<li class="alt">

<span>//echo $obj-</span><span class="tag">&gt;</span><span>private;   </span>

</li>

<li>

<span class="tag">?&gt;</span><span>   </span>

</li>

<li class="alt"><span class="tag"><span> ?php  </span></span></li>

<li><span>class myClass{  </span></li>

<li class="alt">

<span>public $</span><span class="attribute">public</span><span>=</span><span class="attribute-value">"Public"</span><span>;  </span>

</li>

<li>

<span>protected $</span><span class="attribute">protected</span><span>=</span><span class="attribute-value">"Protected"</span><span>;  </span>

</li>

<li class="alt">

<span>private $</span><span class="attribute">private</span><span>=</span><span class="attribute-value">"Private"</span><span>;  </span>

</li>

<li><span>function say_Hello(){  </span></li>

<li class="alt"><span>//我现在什么也不做,等下再告诉你  </span></li>

<li><span>}  </span></li>

<li class="alt"><span>}  </span></li>

<li>

<span>$</span><span class="attribute">obj</span><span>=</span><span class="attribute-value">new</span><span> myClass();  </span>

</li>

<li class="alt">

<span>echo $obj-</span><span class="tag">&gt;</span><span>public;  </span>

</li>

<li>

<span>//echo $obj-</span><span class="tag">&gt;</span><span>protected;  </span>

</li>

<li class="alt">

<span>//echo $obj-</span><span class="tag">&gt;</span><span>private;  </span>

</li>

<li>

<span class="tag">?&gt;</span><span>   </span>

</li>

</ol>

Salin selepas log masuk

通过运行以上示例我们得到一个“Public”,但当你把//echo $obj->private;的注释去掉时,你会得到一下如下的错误:Fatal error: Cannot access protected property myClass::$protected in E:apachehtdocsexamplefile.php on line 13。

可以看到我们不能随意去访问类的属性定义,也就是我们不能去修改PHP类的封装中已经定义的一些操作,这就是可见性了。我们在“外面”是不知道这个类中到底有那些成员,因为这些成员对于其他的类可能是不可见的。

当然如果我们一定要访问或者修改定义为“私有”的属性时,也可以使用PHP所提供的系统方法:_get()和_set()。关于这个在以后再来了解,因为现在我对此也只是有个了解啦。
 


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446066.htmlTechArticlepublic:方法或者属性在任何作用域都可以访问到,而且这是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。 protected:方...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Tarikh dan Masa CakePHP

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Konfigurasi Projek CakePHP

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Muat naik Fail CakePHP

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Penghalaan CakePHP

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

Bincangkan CakePHP

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

Panduan Ringkas CakePHP

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP

See all articles