• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP 命名空间是什么意思?我看了帮助文件了,别让我看了

php 搞代码 3年前 (2022-01-25) 20次浏览 已收录 0个评论
文章目录[隐藏]
<code>非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。</code>

这个话什么意思?我做实验理解:
非限定名称
就是调用function class $的时候不加任何前缀,

就是调用代码自己所在文件中的 class 或者 $ 或者 function,这样理解对吗?

回复内容:

<code>非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::st<mark>@本文来源gaodaimacom搞#代%码@网-</mark><strong>搞代gaodaima码</strong>aticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。</code>

这个话什么意思?我做实验理解:
非限定名称
就是调用function class $的时候不加任何前缀,

就是调用代码自己所在文件中的 class 或者 $ 或者 function,这样理解对吗?

看源码吧

<code>namespace Project\Model; //本文件隶属命名空间Project\Model,如果没有特别说明,以后出现的类名称为该空间下的类,如 User表示\Project\Model\User,Table\User表示\Project\Model\Table\Useruse Zend\Table; //调用\Zend\Table这个类,使用该声明之后再调用$table = new Table();时,这个Table是指\Zend\Tableuse Project\Model\Table PTable; //调用\Project\Model\Table这个类,并指定别名PTable,当调用$table = new PTable();时,这个PTable是指Project\Model\Table//在以上代码中属于声明,不需要特别使用\开头说明是绝对路径class User extends \Project\Model { //User无特别声明,所以该类全名为\Project\Model\User,而\Project\Model因为是反斜杠开头,指\Project\Model这个类(不能写成extends Model,否则会被认为是\Project\Model\Model)}class \User extends Table\User { //使用了反斜杠开头,因此该类全名就是\User,后面的User没有斜杠,则是指\Project\Model\Table\User}</code>

由此可见,对于namespace和use语句,其中的类使用的是全名,而在其它地方必须使用反斜杠开头表示类的全名,否则其全名是 反斜杠 + 当前的namespace + 类名

说通俗点: 命名空间就是一个文件的 位置信息(全局唯一)
比如

<code> lib/pay/weixin.php lib/order/weixin.php</code>

这两个 weixin.php的空间就不同
命名空间就是为了解决class类名重复问题的
你赶紧别做实验了,会把你绕晕的


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP 命名空间是什么意思?我看了帮助文件了,别让我看了

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址