Home  >  Article  >  php教程  >  PHP别名引用错误:“The use statement with non

PHP别名引用错误:“The use statement with non

WBOY
WBOYOriginal
2016-06-06 19:51:011285browse

别名概述 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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn