PHP别名引用错误:“The use statement with non
别名概述 PHP5.3+支持命名空间:namespace,命名空间的一个重要功能是可以使用别名(alias)来引用一个符合规则的名字。 命名空间支持3中形式的别名引用(或称之为引入)方式:类(class)别名,接口(interface)别名和命名空间(namespace)名字别名。 PHP
别名概述
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