關於php命名空間的理解


理解命名空間首先要知道命名空間的作用,也就是它的出現解決了那些問題

官方給出的解決的問題是:

  1. 用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
  2. 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。

可以看下這篇文章:https://blog.csdn.net/zhanghuiqi205/article/details/84671608

         https://www.php.cn/php-weizijiaocheng-414933.html

從ThinkPHP5.0開始,遵循PSR-4自動加載規范,只需要給類庫正確定義所在的命名空間,並且命名空間的路徑與類庫文件的目錄一致,那么就可以實現類的自動加載,從而實現真正的惰性加載。

以phpmailer這個類庫為例,composer自動加載好該類庫,有用的文件都放在src這個目錄下

這些文件的命名空間都是這個:namespace PHPMailer\PHPMailer;

如果我們要使用PHPMailer這個類,需要use PHPMailer\PHPMailer\PHPMailer;所以文件名要和類名一致(但是如果一個文件里有多個類應該如何使用,所以在一個文件中盡量不要定義多個類)

 

 

 

 

命名空間與文件的路徑有時可能不一樣,這個就是,PHPMailer的類文件路徑是phpmailer\phpmailer\src\PHPMailer.php,命名空間卻是PHPMailer\PHPMailer,這是因為在composer加載時就對命名空間與路徑進行了綁定,如下圖:

 

 thinkphp5 composer加載的類庫在vendor目錄下,自己下載的類庫放在extend目錄下,extend目錄下的類庫可以實現自動加載,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM