博客列表 >2018-09-06命名空间

2018-09-06命名空间

阿小的博客
阿小的博客原创
2018年09月09日 21:39:54559浏览

用{}实现命名空间

实例

<?php
//不建议一个文件中创建多个命名空间
//也可用{}大括号,使用{}时可以定义全局空间
namespace One
{
    const NAME = 'PHP中文网';
    class Db
    {
        public static function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return 'say hello';
    }
    
    //print_r(NAME);全局下的函数
    //重新定义print_r()函数
    function print_r($value)
    {
        echo  $value;
    }
    //使用自己定义的print_r()函数
    print_r('你好');
    //使用全局下的print()函数
    \print_r('你好');
}
namespace Two
{

    const NAME = 'PHP.cn';
    class Db
    {
        public function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return 'say hello world';
    }
}

//全局空间
namespace
{
    const NAME = 'www.php.cn';
    //在全局空间下访问One中的NAME
    echo \One\NAME;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

导入其他的命名空间

实例

<?php
//use引入namesapce
//为命名空间起别名
namespace test2;
require 'test.php';
use test\Test as TestAlias;  //导入类,并为类起别名
use test1\test1\test1 as test1; //为命名空间起别名

class Test
{
    public static function test()
    {
        return __METHOD__;
    }
}

echo Test::test().'<br>';
echo TestAlias::test().'<br>';
echo test1\Test::test().'<br>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

限定名称、非限定名称、完全限定名称

实例

<?php
//不建议一个文件中创建多个命名空间
//也可用{}大括号,使用{}时可以定义全局空间
namespace One
{
    const NAME = 'PHP中文网';
    class Db
    {
        public static function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return 'say hello';
    }
    
   
}

//自命名空间,放在前面
namespace Two\Three
{

    const NAME = 'www.PHP.cn';
    class Db
    {
        public function demo()
        {
            return __METHOD__;
        }
    }

    function hello()
    {
        return 'say hello world';
    }
    echo __NAMESPACE__.'<hr>';
}

namespace Two
{

    const NAME = 'PHP.cn';
    class Db
    {
        public function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return '你好';
    }
   
    echo NAME.'<br>';    //非限定名称,没有前缀,类似当前文件
    echo Three\NAME.'<br>'; //限定名称,有前缀,使用命名空间前缀
    echo \One\NAME.'<hr>';     //完全限定名称,使用\目录开始查找
    
    echo __NAMESPACE__.'<hr>';     //魔术常量,输出当前命名空间
    
    echo namespace\hello().'<br>';       //namespace类似self
    echo namespace \Three\hello();
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议