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

搜索
博主信息
博文 33
粉絲 0
評(píng)論 0
訪問量 34396
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
服務(wù)端 - PHP - OOP之命名空間和類的自動(dòng)加載
原創(chuàng)
783人瀏覽過

服務(wù)端 - PHP - OOP之命名空間和類的自動(dòng)加載

一、命名空間

  • 基本語法:namespace 空間名稱;
  • 保留全局空間的語法:namespace 空間名稱 {//代碼}
  • 規(guī)則:命名空間的路徑與類庫文件的目錄一致
  • 訪問:use 命名空間名稱 as 別名

1. 完全限定名稱

  • 解釋:總是從根空間開始,第一個(gè)字符一定是反斜線,根空間, 理解成絕對(duì)路徑
  1. //定義第一個(gè)命名空間
  2. namespace test\A;
  3. class PersonInfo {
  4. public static $name = '小明';
  5. }
  6. //定義第二個(gè)命名空間
  7. namespace test\B;
  8. class PersonInfo {
  9. public static $name = '小紅';
  10. }
  11. //使用完全限定名稱訪問另一個(gè)空間的成員
  12. echo \test\A\PersonInfo::$name;

2. 限定名稱

  • 解釋:成員名稱前面至少要一個(gè)命名空間, 至少要有一個(gè)反斜線\, 且不能在首位, 理解成:相對(duì)路徑
  1. //定義第一個(gè)命名空間
  2. namespace test\A;
  3. class PersonInfo {
  4. public static $name = '小明';
  5. }
  6. //使用限定名稱訪問另一個(gè)空間的成員
  7. echo B\PersonInfo::$name;
  8. //定義第二個(gè)命名空間
  9. namespace test\A\B;
  10. class PersonInfo {
  11. public static $name = '小紅';
  12. }

3. 非限定名稱

  • 解釋:成員前面不能有任何的命名空間,不能有”\”, 理解成文件當(dāng)前路徑
  1. //定義命名空間
  2. namespace test\B;
  3. class PersonInfo {
  4. public static $name = '小紅';
  5. }
  6. //使用非限定名稱訪問當(dāng)前命名空間
  7. echo PersonInfo::$name;

4. 別名使用

  1. //定義第一個(gè)命名空間
  2. namespace test\A;
  3. class PersonInfo {
  4. public static $name = '小明';
  5. }
  6. //定義第二個(gè)命名空間
  7. namespace test\B;
  8. class PersonInfo {
  9. public static $name = '小紅';
  10. }
  11. //定義第三個(gè)命名空間
  12. namespace test\C;
  13. use test\A as A; //空間級(jí)的別名
  14. use test\B as B; //空間級(jí)的別名
  15. echo A\PersonInfo::$name;
  16. echo B\PersonInfo::$name;
  17. echo '<br>';
  18. use test\A\PersonInfo as P1; //類級(jí)的別名
  19. use test\B\PersonInfo as P2; //類級(jí)的別名
  20. echo P1::$name;
  21. echo P2::$name;

二、類的自動(dòng)加載

  • 條件:1. 命名空間必須和類文件所在的絕對(duì)路徑一一對(duì)應(yīng); 2. 當(dāng)前類名稱與當(dāng)前的類文件的名稱完全一致
  • 步驟:
    1. 使用 spl_autoload_register() 注冊(cè)自動(dòng)加載器
    1. 函數(shù)體:將類名中的命名空間的分隔符轉(zhuǎn)為目錄分隔符
    1. 函數(shù)體:生成真正要加載的類文件名稱
    1. 函數(shù)體:加載這個(gè)文件
    1. 封裝自動(dòng)加載器
    1. 導(dǎo)入需要加載的類的路徑

1. autoload.php(自動(dòng)加載類)

  1. try {
  2. spl_autoload_register(function($className) {
  3. //1. 將類名中的命名空間的分隔符轉(zhuǎn)為目錄分隔符
  4. $path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
  5. //2. 生成真正要加載的類文件名稱
  6. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  7. //3. 加載這個(gè)文件
  8. require $file;
  9. });
  10. } catch (Exception $e) {
  11. die($e->getMessage());
  12. }

2. 需要自動(dòng)加載的類

  1. namespace pub\putong;
  2. class PersonInfo {
  3. public static function getName() {
  4. return '小明';
  5. }
  6. }

3. 入口文件

  1. //封裝自動(dòng)加載器
  2. require 'autoload.php';
  3. use pub\putong\PersonInfo;
  4. echo PersonInfo::getName();

三、課程總結(jié)

  • 今天學(xué)習(xí)了 PHP 的面向?qū)ο缶幊?,通過上課認(rèn)真聽講和認(rèn)真完成老師布置的作業(yè),使得我對(duì) PHP 面向?qū)ο缶幊痰睦斫夂瓦\(yùn)用更加深入和熟悉。最主要的知識(shí)點(diǎn)是明白和掌握了命名空間和自動(dòng)加載類的特點(diǎn)和使用場(chǎng)景以及它們的基本用法。
批改老師:天蓬老師天蓬老師

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

老師批語:很認(rèn)真, 后面的課程 會(huì)越來越有意思的
本博文版權(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í)者快速成長!
關(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é)