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

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

WBOY
WBOY원래의
2016-06-06 19:51:011285검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.