PHP別名引用錯誤:“The use statement with non-compound name … has no effect”


別名概述

PHP5.3+支持命名空間:namespace,命名空間的一個重要功能是能夠使用別名(alias)來引用一個符合規則的名字。

命名空間支持3中形式的別名引用(或稱之為引入)方式:類(class)別名。接口(interface)別名和命名空間(namespace)名字別名。

PHP5.6+還支持函數別名和常量別名。

(注:php.net 站點上關於別名這一段的中文描寫敘述有歧義和錯誤,更正如上)

詳細語法格式

use xxx\xxx\xxx as xx;

所以use語句實際上是一種別名引用,而不是通常的import。那么use后面出現的名稱就得是符合規則的別名。

錯誤及原因

如今再來看相似文章標題中的錯誤信息:

“The use statement with non-compound name … has no effect”

我們就能明確這個錯誤信息指的是use語句中出現的名稱不是復合名稱。不符合規則,所以“沒實用”。

檢查你的語句是不是直接在use后面跟上了類或接口的名字,比方

use News;

改動為:

use YourNameSpace\News; (這個和use YourNameSpace\News as News是一樣的)

假設是Yii2框架,那么通常數據模型的別名引用相似例如以下:

use app\models\News;

假設是Laravel,因為在Composer中已默認加入了app\models路徑,將自己主動完畢別名引用。

所以僅僅要確保類名正確。無需額外的use語句。

使用框架時。因為最新的框架都遵循PSR-4自己主動載入命名規范,

所以小心"下划線"( _ )在文件、路徑名稱中的使用。會被自己主動分解為多個路徑來進行匹配。


by iefreer


免責聲明!

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



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