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

搜索
博主信息
博文 64
粉絲 6
評(píng)論 2
訪問量 100639
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
php 命名空間的使用和類的自動(dòng)加載
王嬌
原創(chuàng)
881人瀏覽過

學(xué)習(xí)總結(jié)

  • 不同的命名空間可以定義相同名稱的類、接口、函數(shù)、常量
  • 通過空間的別名可以簡(jiǎn)化代碼
  • 可以把具有特殊功能的類封裝在類文件中進(jìn)行自動(dòng)加載

1.命名空間的定義

  1. <?php
  2. //清華大學(xué)
  3. namespace nQhdx//不同的命名空間可以存在相同的類,函數(shù),接口,常量
  4. {
  5. class StuInfo
  6. {
  7. private $school = '清華大學(xué)';
  8. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  9. private $classes = '04-08';
  10. public function printSDC()
  11. {
  12. echo '班名:',$this ->classes,'<br>';
  13. echo '系名:',$this ->dep,'<br>';
  14. echo '校名:',$this ->school,'<br>';
  15. echo '<hr>';
  16. }
  17. }
  18. //訪問當(dāng)前空間中的類和類中的方法,可省略當(dāng)前空間名稱:非限定名稱
  19. $stu = new StuInfo();
  20. $stu ->printSDC();
  21. }
  22. //人民大學(xué)
  23. namespace nRmdx
  24. {
  25. class StuInfo
  26. {
  27. private $school = '人民大學(xué)';
  28. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  29. private $classes = '04-08';
  30. public function printSDC()
  31. {
  32. echo '班名:',$this ->classes,'<br>';
  33. echo '系名:',$this ->dep,'<br>';
  34. echo '校名:',$this ->school,'<br>';
  35. echo '<hr>';
  36. }
  37. }
  38. //訪問當(dāng)前空間中的類和類中的方法,可省略當(dāng)前空間名稱:非限定名稱
  39. $stu = new StuInfo();
  40. $stu ->printSDC();
  41. //訪問另一個(gè)空間是的類需要使用:完全限定名稱以“\”開頭+空間名稱+類名
  42. echo '***********訪問另一個(gè)空間的類***************','<br>';
  43. $stu1 =new \nQhdx\StuInfo();
  44. $stu1 ->printSDC();
  45. }
  46. //北京大學(xué)
  47. namespace nBjdx
  48. {
  49. class School
  50. {
  51. private $school = '北京大學(xué)';
  52. public function printSchool()
  53. {
  54. //訪問具有層級(jí)關(guān)系的空間時(shí)
  55. //$dep = new Computer\StuInfo();代表訪問的是當(dāng)前空間下的Computer空間下的StuInof類
  56. $dep = new Computer\StuInfo();
  57. $dep->printSDC();
  58. echo '校名:',$this ->school,'<br>';
  59. echo '<hr>';
  60. }
  61. }
  62. $stu = new School();
  63. $stu -> printSchool();
  64. }
  65. namespace nBjdx\Computer
  66. {
  67. class StuInfo
  68. {
  69. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  70. private $classes = '04-08';
  71. public function printSDC()
  72. {
  73. echo '班名:',$this ->classes,'<br>';
  74. echo '系名:',$this ->dep,'<br>';
  75. }
  76. }
  77. }
  78. ?>
  • 代碼運(yùn)行效果

2.命名空間的別名

  1. <?php
  2. //清華大學(xué)
  3. namespace nQhdx//不同的命名空間可以存在相同的類,函數(shù),接口,常量
  4. {
  5. class StuInfo
  6. {
  7. private $school = '清華大學(xué)';
  8. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  9. private $classes = '04-08';
  10. public function printSDC()
  11. {
  12. echo '班名:',$this ->classes,'<br>';
  13. echo '系名:',$this ->dep,'<br>';
  14. echo '校名:',$this ->school,'<br>';
  15. echo '<hr>';
  16. }
  17. }
  18. }
  19. //人民大學(xué)
  20. namespace nRmdx
  21. {
  22. class StuInfo
  23. {
  24. private $school = '人民大學(xué)';
  25. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  26. private $classes = '04-08';
  27. public function printSDC()
  28. {
  29. echo '班名:',$this ->classes,'<br>';
  30. echo '系名:',$this ->dep,'<br>';
  31. echo '校名:',$this ->school,'<br>';
  32. echo '<hr>';
  33. }
  34. }
  35. }
  36. //北京大學(xué)
  37. namespace nBjdx
  38. {
  39. class StuInfo
  40. {
  41. private $school = '北京大學(xué)';
  42. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  43. private $classes = '04-08';
  44. public function printSDC()
  45. {
  46. echo '班名:',$this ->classes,'<br>';
  47. echo '系名:',$this ->dep,'<br>';
  48. echo '校名:',$this ->school,'<br>';
  49. echo '<hr>';
  50. }
  51. }
  52. }
  53. namespace nSchool
  54. {
  55. //使用空間別名,可以簡(jiǎn)化代碼
  56. use \nQhdx\StuInfo as qStu;
  57. use \nRmdx\StuInfo as rStu;
  58. use \nBjdx\StuInfo as bStu;
  59. $stu1 = new qStu();//通過空間別名訪問該空間中的類
  60. $stu1 ->printSDC();
  61. $stu2 = new rStu();
  62. $stu2 ->printSDC();
  63. $stu3 = new bStu();
  64. $stu3 ->printSDC();
  65. }
  66. ?>
  • 代碼運(yùn)行效果

3.類的自動(dòng)加載

  • 最終實(shí)現(xiàn)的類
  1. <?php
  2. require 'autoLoad.php';
  3. //通過autoLoad.php中的自動(dòng)加載器,在使用Qhdx類的時(shí)候自動(dòng)加載
  4. //如果想使用原始類中的名稱則不需要加as關(guān)鍵字
  5. use stuInfo\school\Qhdx;
  6. //通過autoLoad.php中的自動(dòng)加載器,在使用Qhdx類的時(shí)候自動(dòng)加載
  7. use stuInfo\school\Rmdx;
  8. //通過autoLoad.php中的自動(dòng)加載器,在使用Qhdx類的時(shí)候自動(dòng)加載
  9. use stuInfo\school\Bjdx;
  10. //類已經(jīng)通過自動(dòng)加載器加載成功,可直接使用
  11. $stu1 = new Qhdx();
  12. $stu1 ->printSDC();
  13. $stu2 = new Rmdx();
  14. $stu2 ->printSDC();
  15. $stu3 = new Bjdx();
  16. $stu3 ->printSDC();
  17. ?>
  • 想要自動(dòng)加載的類文件Bjdx.php
  1. <?php
  2. //北京大學(xué)
  3. //要實(shí)現(xiàn)自動(dòng)加載,
  4. //1.空間名稱必須和類文件所在的路徑一一對(duì)應(yīng)
  5. //2.文件名必須與類名相同
  6. namespace stuInfo\school
  7. {
  8. class Bjdx
  9. {
  10. private $school = '北京大學(xué)';
  11. private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
  12. private $classes = '04-08';
  13. public function printSDC()
  14. {
  15. echo '班名:',$this ->classes,'<br>';
  16. echo '系名:',$this ->dep,'<br>';
  17. echo '校名:',$this ->school,'<br>';
  18. echo '<hr>';
  19. }
  20. }
  21. }
  22. ?>
  • 自動(dòng)加載器的實(shí)現(xiàn)autoLoad.php
  1. <?php
  2. try
  3. {
  4. spl_autoload_register(function($className){
  5. //DIRECTORY_SEPARATOR返回當(dāng)前系統(tǒng)的目錄分隔符
  6. //將空間中的分隔符替換成當(dāng)前系統(tǒng)的目錄分隔符
  7. $path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
  8. //__DIR__返回當(dāng)前文件所在路徑
  9. //生成要加載的類文件名稱
  10. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  11. // 3. 加載這個(gè)文件
  12. require $file;
  13. });
  14. }
  15. catch(Exception $e)
  16. {
  17. $e->getMessage();
  18. }
  19. ?>
  • 當(dāng)前類文件所在的目錄結(jié)構(gòu)

  • 代碼運(yùn)行效果

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

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

老師批語:有了命名空間, 就不再擔(dān)心全局成員的命名沖突了,包括引入的第三方組件,這是促進(jìn)php組件化開發(fā)的基石, 可以說, 現(xiàn)代php就靠它實(shí)現(xiàn)華麗轉(zhuǎn)身
本博文版權(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é)申明 意見反饋 講師合作 廣告合作 最新更新
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é)