设为首页 收藏本站
查看: 633|回复: 0

[经验分享] PHP 命名空间 namespace 函数调用 类引用 详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-12-16 08:14:16 | 显示全部楼层 |阅读模式
PHP namespace 命名空间 函数调用 类引用 详细测试分析

  本文测试中,假设index.php页面和test.php页面在同一个根目录下,方便加载test.php页面。
  前提条件都是在namespace A;下进行测试。
namespace A;
use B\D, C\E as F;  // 函数调用
foo();      // 首先尝试调用定义在命名空间"A"中的函数foo()
\foo();     // 调用全局空间函数 "foo"
my\foo();   // 调用定义在命名空间"A\my"中函数 "foo"
F();        // 首先尝试调用定义在命名空间"A"中的函数 "F"
B\foo();    // 调用命名空间 "A\B" 中函数 "foo"
B::foo();   // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法
D::foo();   // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法
\B\foo();   // 调用命名空间 "B" 中的函数 "foo"
\B::foo();  // 调用全局空间中的类 "B" 的 "foo" 方法
A\B::foo();   // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法
\A\B::foo();  // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法

  

  //类引用
new B();    // 创建命名空间 "A" 中定义的类 "B" 的一个对象
new D();    // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象
new F();    // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象
new \B();   // 创建定义在全局空间中的类 "B" 的一个对象
new \D();   // 创建定义在全局空间中的类 "D" 的一个对象
new \F();   // 创建定义在全局空间中的类 "F" 的一个对象

  

  函数调用

  1当前命名空间A下函数调用 语法 foo();

  index.php页面

  test.php页面(定义命名空间"A\my"的页面)
  结果为
  
我是命名空间"A\my"中的函数foo()  

  3.当前命名空间A下调用命名空间 "A\B"的函数"foo"
  语法
  require 'test.php';//加载命名空间 "A\B"的函数"foo"文件

  B\foo();            

  index.php页面

  test.php页面(定义命名空间 "A\B"的函数"foo"的页面)
  结果为
命名空间 "A\B" 中函数 "foo"  

  4.当前命名空间A下调用本命名空间 "A" 中定义的类 "B" 的 "foo" 静态方法
  语法
  B::foo();            

  index.php页面

  结果为
命名空间 "A" 中定义的类 "B" 的 "foo" 方法  

  5.当前命名空间A下调用本命名空间 "B" 中定义的类 "D" 的 "foo" 静态方法
  语法
  require 'test.php';   //加载文件

  use B\D;                //引导类

  D::foo();                //进行调用

  index.php页面

  test.php页面(定义命名空间 "B"的类"D"的函数"foo"的页面)
  结果为
命名空间 "B" 中定义的类 "D" 的 "foo" 方法  

  6.当前命名空间A下调用命名空间 "B"的函数"foo"
  语法
  require 'test.php';//加载命名空间 "B"的函数"foo"文件

  \B\foo();            

  index.php页面

  test.php页面(定义命名空间 "B"的函数"foo"的页面)
  结果为
命名空间 "B" 中函数 "foo"  

  7.当前命名空间A下调用全局空间 "B"的函数"foo"静态方法
  语法
  require 'test.php';//加载全局空间 "B"的函数"foo"文件

  \B::foo();            

  index.php页面

  test.php页面(定义全局空间 "B"的函数"foo"的页面)
  结果为
全局空间的B类中foo方法  

  8.当前命名空间A下调用命名空间 "A\A"的B类"foo"静态方法
  语法
  require 'test.php';//加载命名空间 "A\A"的B类"foo"静态方法文件

  A\B::foo();            

  index.php页面

  test.php页面(定义命名空间 "A\A"的B类"foo"静态方法的页面)
  结果为
命名空间A\A中B类foo方法  

  9.当前命名空间A下调用命名空间 "A\B"的B类"foo"静态方法
  语法
  require 'test.php';//加载命名空间 "A\B"的B类"foo"静态方法文件

  \A\B::foo();            

  index.php页面

  test.php页面(定义命名空间 "A\B"的B类"foo"静态方法的页面)
  结果为
命名空间A\B中B类的foo静态方法  

  类引用
  1当前命名空间A下本空间类引用  语法 $b=new B();

  index.php页面

  test.php页面(定义命名空间B中D类的页面)
  结果为
命名空间B中D类  

  3当前命名空间A下命名空间 "C" 中定义的类 "E"引用  

  语法

  use C\E as F        //导入命名空间C中的E类  F为命名空间 "C" 中定义的类 "E"的别名
  $b=new F();
  index.php页面

  test.php页面(定义命名空间C中E类的页面)
  结果为
命名空间C中E类  

  4当前命名空间A下全局空间中定义的类 "B","D" "F"引用  

  语法
  require 'test.php';//加载全局空间中定义的类 "B","D" "F"文件

  $b=new \B();  //    \  表示绝对路径引用  全局空间中定义的类

  $d=new \D();
  $f=new \F();

  index.php页面

  test.php页面(全局空间中定义的类 "B","D" "F"的页面)
  结果为
全局空间的类B
全局空间的类D
全局空间的类F  

  附录
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-651854-1-1.html 上篇帖子: php开发多语言网站一点小知识 下篇帖子: PHP正则表达式简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表