Blogger Information
Blog 28
fans 0
comment 0
visits 15734
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2018-09-06命名空间
阿小的博客
Original
557 people have browsed it

用{}实现命名空间

实例

<?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();
}

运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post