Rumah pembangunan bahagian belakang tutorial php PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间_php实例

PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间_php实例

May 27, 2016 am 10:19 AM

这篇文章主要介绍了PHP动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 的相关资料,需要的朋友可以参考下

PHP前言:

•动态地创建属性和方法

•对象的复制

•对象的比较

•加载指定的文件

•自动加载类文件

•命名空间

示例

1、类的相关知识点 3(动态地创建属性和方法)

class/class3.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

<?php

/**

* 类的相关知识点 3(动态地创建属性和方法)

*/

// 用于演示如何动态地创建属性(这就是 php 中所谓的重载)

class Class1

{

// __set 魔术方法,当设置的属性不存在或者不可访问(private)时就会调用此函数

public function __set($name, $value)

{

echo "__set \$name: {$name}, \$value: {$value}";

echo "<br />";

}

// __get 魔术方法,当获取的属性不存在或者不可访问(private)时就会调用此函数

public function __get($name)

{

echo "__get \$name: {$name}";

echo "<br />";

return 999;

}

}

$objClass1 = new Class1();

// 当你设置的属性不存在或者不可访问(private)时,就会调用对应的 __set 魔术方法

$objClass1->property1 = wanglei; // 不可访问的如 private ,或者不存在的

// 当你获取的属性不存在或者不可访问(private)时,就会调用对应的 __get 魔术方法

echo $objClass1->property2;

echo "<br />";

// 用于演示如何动态地创建方法(这就是 php 中所谓的重载)

class Class2

{

// __call 魔术方法,当调用的实例方法不存在或者不可访问(private)时就会调用此函数

public function __call($name, $arguments)

{

echo "__call \$name: {$name}, \$arguments: " . implode(&#39;, &#39;, $arguments);

echo "<br />";

}

// __callStatic 魔术方法,当调用的类方法不存在或者不可访问(private)时就会调用此函数

public static function __callStatic($name, $arguments)

{

echo "__callStatic \$name: {$name}, \$arguments: " . implode(&#39;, &#39;, $arguments);

echo "<br />";

}

}

$objClass2 = new Class2();

// 当你调用的实例方法不存在或者不可访问(private)时,就会调用对应的 __call 魔术方法

echo $objClass2->method1("aaa", "bbb");

// 当你调用的类方法不存在或者不可访问(private)时,就会调用对应的 __callStatic 魔术方法

echo Class2::method2("aaa", "bbb");

Salin selepas log masuk

2、类的相关知识点 4(对象的复制,对象的比较)

class/class4.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

<?php

/**

* 类的相关知识点 4(对象的复制,对象的比较)

*/

// 用于演示如何复制对象

class Class1

{

public $field1 = "field1";

public $field2 = "field2";

// 通过 clone 复制对象时,会调用此魔术方法

function __clone()

{

echo "__clone";

echo "<br />";

}

}

$objClass1 = new Class1();

// 通过 clone 复制对象,会调用 __clone 魔术方法

$objClass2 = clone $objClass1;

// 通过 clone 复制的对象为浅拷贝(shallow copy),即成员数据之间的一一赋值, 而所有的引用属性仍然会是一个指向原来的变量的引用(如果要做 deep copy 则需要自己写)

echo $objClass2->field1; // output: field1

echo "<br />";

echo $objClass2->field2; // output: field2

echo "<br />";

// 如果两个对象的属性和属性值都相等,则他们“==”相等,

if ($objClass1 == $objClass2)

{

echo &#39;$objClass1 == $objClass2&#39;;

echo "<br />";

}

// 如果两个对象的属性和属性值都相等,但不是同一个类的实例,则他们“===”不相等

if ($objClass1 !== $objClass2)

{

echo &#39;$objClass1 !== $objClass2&#39;;

echo "<br />";

}

// 如果两个对象是同一个类的实例,则他们“===”相等

if ($objClass1 === $objClass1)

{

echo &#39;$objClass1 === $objClass1&#39;;

echo "<br />";

}

// 如果两个对象是同一个类的实例,则他们“===”相等

$objClass3 = &$objClass1;

if ($objClass1 === $objClass3)

{

echo &#39;$objClass1 === $objClass3&#39;;

echo "<br />";

}

Salin selepas log masuk

3、类的相关知识点 5(加载指定的文件,自动加载类文件)

class/class5.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

<?php

/**

* 类的相关知识点 5(加载指定的文件,自动加载类文件)

*/

/*

* 包含并运行指定文件,可以是绝对路径也可以是相对路径

* include 找不到的话则警告,然后继续运行(include_once: 在当前文件中只 include 指定文件一次)

* require 找不到的话则错误,然后终止运行(require_once: 在当前文件中只 require 指定文件一次)

* include &#39;&#39;;

* require &#39;&#39;;

* include_once &#39;&#39;;

* require_once &#39;&#39;;

*/

// 演示如何通过 __autoload 魔术方法,来实现类的自动加载

function __autoload($class_name)

{

// 加载指定的文件

require_once $class_name . &#39;.class.php&#39;;

}

// 如果在当前文件中找不到 MyClass 类,那么就会去调用 __autoload 魔术方法

$obj = new MyClass();

echo $obj->name;

echo "<br />";

class/MyClass.class.php

<?php

class MyClass

{

public $name = "webabcd";

}

Salin selepas log masuk

4、类的相关知识点 6(命名空间)

class/class6.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

63

64

65

66

67

68

69

70

71

72

73

74

<?php

/**

* 类的相关知识点 6(命名空间)

*/

// 以下代码仅用于演示,实际项目中不建议在一个文件中定义多个 namespace

// 如果当前文件中只有一个命名空间,那么下面的这段可以省略掉命名空间的大括号,直接 namespace MyNamespace1; 即可

namespace MyNamespace1

{

const MyConst = "MyNamespace1 MyConst";

function myFunction()

{

echo "MyNamespace1 myFunction";

echo "<br />";

}

class MyClass

{

public function myMethod()

{

echo "MyNamespace1 MyClass myMethod";

echo "<br />";

}

}

}

// 定义命名空间时,可以指定路径

namespace Sub1\Sub2\MyNamespace2

{

const MyConst = "MyNamespace2 MyConst";

function myFunction()

{

echo "MyNamespace2 myFunction";

echo "<br />";

}

class MyClass

{

public function myMethod()

{

echo "MyNamespace2 MyClass myMethod";

echo "<br />";

}

}

}

namespace MyNamespace3

{

// 调用指定命名空间中的指定常量

echo \MyNamespace1\MyConst;

echo "<br />";

// 调用指定命名空间中的指定函数

\MyNamespace1\myFunction();

// 实例化指定命名空间中的类

$obj1 = new \MyNamespace1\MyClass();

$obj1->myMethod();

}

namespace MyNamespace4

{

// use 指定的命名空间

use \Sub1\Sub2\MyNamespace2;

// 之后不用再写全命名空间的路径了,因为之前 use 过了

echo MyNamespace2\MyConst;

echo "<br />";

MyNamespace2\myFunction();

$obj1 = new MyNamespace2\MyClass();

$obj1->myMethod();

}

namespace MyNamespace5

{

// use 指定的命名空间,并为其设置别名

use \Sub1\Sub2\MyNamespace2 as xxx;

// 之后再调用命名空间时,可以使用其别名

echo xxx\MyConst;

echo "<br />";

xxx\myFunction();

$obj1 = new xxx\MyClass();

$obj1->myMethod();

}

Salin selepas log masuk

以上所述是小编给大家介绍的PHP动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 的相关介绍,希望对大家有所帮助!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat 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)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Terangkan konsep pengikatan statik lewat dalam PHP. Terangkan konsep pengikatan statik lewat dalam PHP. Mar 21, 2025 pm 01:33 PM

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Mar 28, 2025 pm 05:11 PM

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Mar 28, 2025 pm 05:12 PM

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Apr 01, 2025 pm 03:12 PM

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

See all articles