亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 70
粉絲 1
評(píng)論 0
訪問(wèn)量 67391
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
類成員重載-全局成員-命名空間聲明訪問(wèn)分解合并-子空間訪問(wèn)任何空間成員
葡萄枝子
原創(chuàng)
935人瀏覽過(guò)

類成員重載-全局成員-命名空間聲明訪問(wèn)分解合并-子空間訪問(wèn)任何空間成員

  1. 描述類成員重載的原理與實(shí)現(xiàn),并實(shí)例演示;
  2. 全局成員有哪幾種,有什么特點(diǎn),并實(shí)例演示;
  3. 實(shí)例演示空間的聲明與空間成員的訪問(wèn);
  4. 實(shí)例演示空間成員的分解與合并操作;
  5. 實(shí)例演示子空間,并在子空間中訪問(wèn)任何空間中的成員的方式;

1. 描述類成員重載的原理與實(shí)現(xiàn),并實(shí)例演示

  • 訪問(wèn)或設(shè)置類中不存在的屬性或方法時(shí),調(diào)用的魔術(shù)方法
  1. class Demo
  2. {
  3. // 私有屬性
  4. private $data = [];
  5. // 公開(kāi)方法
  6. public function data()
  7. {
  8. return $this->data;
  9. }
  10. // 設(shè)置類中不存在的屬性時(shí)調(diào)用
  11. public function __set($name, $value)
  12. {
  13. $this->data[$name] = $value;
  14. }
  15. // 訪問(wèn)類中不存在的屬性時(shí)調(diào)用
  16. public function __get($name)
  17. {
  18. if (isset($this->data[$name]))
  19. return $this->data[$name];
  20. return 'Property ' . $name . ' not exist.';
  21. }
  22. // 訪問(wèn)類中不存在的方法時(shí)調(diào)用
  23. public function __call($name, $arguments)
  24. {
  25. if (method_exists($this, $name))
  26. return call_user_func_array([$this, $name], $arguments);
  27. return 'Method ' . $name . ' not exist.';
  28. }
  29. // 訪問(wèn)類中不存在的靜態(tài)方法時(shí)調(diào)用
  30. public static function __callStatic($name, $arguments)
  31. {
  32. return 'Static Method: ' . $name . ', args: ' . implode(',', $arguments);
  33. }
  34. // 對(duì)象當(dāng)字符串使用時(shí)調(diào)用
  35. public function __toString()
  36. {
  37. return 'Magic Method: ' . __FUNCTION__;
  38. }
  39. // 對(duì)象當(dāng)函數(shù)使用時(shí)調(diào)用
  40. public function __invoke()
  41. {
  42. return 'Magic Method: ' . __FUNCTION__;
  43. }
  44. // 對(duì)象序列化時(shí)調(diào)用
  45. public function __sleep()
  46. {
  47. return ['Magic Method', __FUNCTION__];
  48. }
  49. // 對(duì)象反序列化時(shí)調(diào)用
  50. public function __wakeup()
  51. {
  52. echo 'Magic Method: ' . __FUNCTION__;
  53. }
  54. }
  55. $obj = new Demo();
  56. // 設(shè)置類中不存在的屬性
  57. $obj->hello = 'hello world!';
  58. // hello world!
  59. echo $obj->hello, '<br>';
  60. // 訪問(wèn)類中不存在的屬性
  61. // Property world not exist.
  62. echo $obj->world, '<br>';
  63. // 訪問(wèn)類中存在的方法
  64. // Array ( [hello] => hello world! )
  65. echo print_r($obj->data(), true), '<br>';
  66. // 訪問(wèn)類中不存在的方法
  67. // Method func not exist.
  68. echo $obj->func(), '<br>';
  69. // 訪問(wèn)類中不存在的靜態(tài)方法
  70. // Static Method: func, args: hello,world!
  71. echo Demo::func('hello', 'world!'), '<br>';
  72. // 對(duì)象當(dāng)字符串使用時(shí)
  73. // Magic Method: __toString
  74. echo $obj, '<br>';
  75. // 對(duì)象當(dāng)函數(shù)使用時(shí)
  76. // Magic Method: __invoke
  77. echo $obj(), '<br>';
  78. // 對(duì)象序列化時(shí)
  79. $serObj = serialize($obj);
  80. // O:4:"Demo":2:{s:12:"Magic Method";N;s:7:"__sleep";N;}
  81. echo $serObj, '<br>';
  82. // 對(duì)象反序列化時(shí)
  83. // Magic Method: __wakeup
  84. unserialize($serObj);
  85. echo '<hr>';

屬性方法重載

2. 全局成員有哪幾種,有什么特點(diǎn),并實(shí)例演示

  • 全局成員:類,常量,函數(shù)
  • 特點(diǎn):不能重復(fù)聲明
  1. // 類
  2. class App
  3. {
  4. public $app = __CLASS__;
  5. }
  6. // 常量
  7. const APP = 'Helo App';
  8. // 函數(shù)
  9. function app()
  10. {
  11. return __FUNCTION__;
  12. }
  13. // 類
  14. // App
  15. echo (new App)->app, '<br>';
  16. // 常量
  17. // Helo App
  18. echo APP, '<br>';
  19. // 函數(shù)
  20. // app
  21. echo app(), '<br>';

全局成員

3. 實(shí)例演示空間的聲明與空間成員的訪問(wèn)

  • 新建一個(gè) 0222-2.php 文件
  1. // 全局空間
  2. namespace {
  3. // 類
  4. class App
  5. {
  6. public $app = 'App';
  7. }
  8. // 常量
  9. const APP = 'Helo App';
  10. // 函數(shù)
  11. function app()
  12. {
  13. return 'app';
  14. }
  15. // 類
  16. // App
  17. echo App::class, '<br>';
  18. // 常量
  19. // APP
  20. echo APP::class, '<br>';
  21. // 函數(shù)
  22. // app
  23. echo app::class, '<hr>';
  24. }
  25. // 命名空間
  26. namespace Ns {
  27. // 類
  28. class App
  29. {
  30. public $app = 'App';
  31. }
  32. // 常量
  33. const APP = 'Helo App';
  34. // 函數(shù)
  35. function app()
  36. {
  37. return 'app';
  38. }
  39. // 類
  40. // Ns\App
  41. echo App::class, '<br>';
  42. // 常量
  43. // Ns\APP
  44. echo APP::class, '<br>';
  45. // 函數(shù)
  46. // Ns\app
  47. echo app::class, '<hr>';
  48. }

命名空間

4. 實(shí)例演示空間成員的分解與合并操作

  • 將上面命名空間 Ns 分解到 0222-3.php 合并 0222-3-1.php, 0222-3-2.php, 0222-3-3.php

  • 新建 0222-3.php

  1. // 命名空間
  2. namespace Ns;
  3. require '0222-3-1.php';
  4. require '0222-3-2.php';
  5. require '0222-3-3.php';
  6. // 類
  7. // Ns\App
  8. echo App::class, '<br>';
  9. // 常量
  10. // Ns\APP
  11. echo APP::class, '<br>';
  12. // 函數(shù)
  13. // Ns\app
  14. echo app::class, '<hr>';
  • 新建 0222-3-1.php
  1. // 命名空間
  2. namespace Ns {
  3. // 類
  4. class App
  5. {
  6. public $app = 'App';
  7. }
  8. }
  • 新建 0222-3-2.php
  1. // 命名空間
  2. namespace Ns {
  3. // 常量
  4. const APP = 'Helo App';
  5. }
  • 新建 0222-3-3.php
  1. // 命名空間
  2. namespace Ns {
  3. // 函數(shù)
  4. function app()
  5. {
  6. return 'app';
  7. }
  8. }
  • 運(yùn)行合并文件 0222-3.php 圖

空間成員分解合并

5. 實(shí)例演示子空間,并在子空間中訪問(wèn)任何空間中的成員的方式

  • 子空間訪問(wèn)其它空間使用絕對(duì)路徑

  • 新建 0222-4.php

  1. // 全局空間
  2. namespace {
  3. const HELLO = 'hello world!';
  4. }
  5. // 命名空間
  6. namespace Ns {
  7. // 類
  8. class App
  9. {
  10. public $app = 'App';
  11. }
  12. // 全局空間
  13. // hello world!
  14. echo \HELLO, '<hr>';
  15. }
  16. // 子空間
  17. namespace Ns\Ns1 {
  18. // 常量
  19. const APP = 'Helo App';
  20. // 當(dāng)前空間 - 常量
  21. // Ns\Ns1\APP
  22. echo APP::class, '<br>';
  23. // 父空間 - 類
  24. // Ns\App
  25. echo \Ns\App::class, '<br>';
  26. // 全局空間
  27. // hello world!
  28. echo \HELLO, '<hr>';
  29. }
  30. // 子子空間
  31. namespace Ns\Ns1\Ns2 {
  32. // 函數(shù)
  33. function app()
  34. {
  35. return 'app';
  36. }
  37. // 父空間 - 類
  38. // Ns\App
  39. echo \Ns\App::class, '<br>';
  40. // 子空間 - 常量
  41. // Ns\Ns1\APP
  42. echo \Ns\Ns1\APP::class, '<br>';
  43. // 當(dāng)前空間 - 函數(shù)
  44. // Ns\Ns1\Ns2\app
  45. echo app::class, '<br>';
  46. // 全局空間
  47. // hello world!
  48. echo \HELLO, '<hr>';
  49. }

子空間訪問(wèn)成員

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語(yǔ):
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)