美文网首页
php命名空间

php命名空间

作者: 胡木木OvO | 来源:发表于2020-04-20 09:56 被阅读0次

[PHP命名空间的作用、为什么使用命名空间?]

  • 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。

  • 在讨论如何使用命名空间之前,必须了解 PHP 是如何知道要使用哪一个命名空间中的元素的。可以将 PHP 命名空间与文件系统作一个简单的类比。在文件系统中访问一个文件有三种方式:

    1. 相对文件名形式如foo.txt。它会被解析为 currentdirectory/foo.txt,其中 currentdirectory 表示当前目录。因此如果当前目录是 /home/foo,则该文件名被解析为/home/foo/foo.txt
    1. 相对路径名形式如subdirectory/foo.txt。它会被解析为 currentdirectory/subdirectory/foo.txt
    1. 绝对路径名形式如/main/foo.txt。它会被解析为/main/foo.txt
  • PHP 命名空间中的元素使用同样的原理。例如,类名可以通过三种方式引用:

    1. 非限定名称,或不包含前缀的类名称,例如 $a=new foo();foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。详情参见 使用命名空间:后备全局函数名称/常量名称
    1. 限定名称,或包含前缀的名称,例如
      $a = new subnamespace\foo();subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo
    1. 完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo();\currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo
  • 举个列子

比如我有两个test class 需要在同一个php中引用

<?php 
    namespace  test1;
    class test{
        public function todo(){};  
    } 
<?php 
    namespace  test2;
    class test{
        public function todo(){};  
    } 

这样加了命名空间 namespace test1; namespace test2; 就不会冲突了,我们就可以在同一个php中引用了

<?php
  require "test/test1.php";
  require "test/test2.php"
  $test1 = new test1\test();
  $test2= new test2\test();

相关文章

  • PHP命名空间和公共空间

    PHP命名空间 PHP 命名空间(namespace)是在PHP 5.3中加入的。PHP 命名空间可以解决以下两类...

  • php命名空间与自动加载

    命名空间(PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法...

  • PHP 新手入门指南 - 使用命名空间

    首先来了解一下命名空间: (PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是...

  • php初级讲义11-命名空间

    命名空间的概念 命名空间是一种封装事物的方法。 命名空间用namespace关键字来声明。 以PHP或php为名或...

  • php命名空间

    [PHP命名空间的作用、为什么使用命名空间?] 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或...

  • PHP命名空间

    一、命名空间概述 1、什么是命名空间 1)从广义上来说,命名空间是一种封装事物的方法。2)在很多地方都可以见到这种...

  • PHP——命名空间

    PHP命名空间的作用、为什么使用命名空间 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出...

  • php 命名空间

    命名空间 什么是命名空间? 广义来说,是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目...

  • PHP命名空间

    什么是命名空间 命名空间是在php5.3以后的版本引入的。命名空间是一个抽象概念,在编程中用于封装划分一组方法or...

  • PHP命名空间

    可以访问const的、函数和对象; define不可以! 1,非限定命名空间:echo a 2,限定命名空间ech...

网友评论

      本文标题:php命名空间

      本文链接:https://www.haomeiwen.com/subject/sgclihtx.html