PHP namespace(一)

本文介绍了PHP中命名空间的概念,包括函数、类及常量在不同命名空间中的作用范围。通过实例展示了如何在不同的命名空间中调用函数和类,以及常量在命名空间中的特性。

命名空间的作用域

1.函数的namespace

  • 各自命名空间调用各自命名空间的函数
<?php

namespace a
{
    function hello()
    {
        return '命名空间' . __NAMESPACE__ . '<br>函数名称是:' . __FUNCTION__;
    }
}

namespace b
{
    function hello()
    {
        return '命名空间' . __NAMESPACE__ . '<br>函数名称是:' . __FUNCTION__;
    }
}

namespace
{
    echo a\hello();     //调用a空间中的hello
    echo '<hr>';
    echo b\hello();     //调用b空间中的hello
}

?>

运行的结果

这里写图片描述

  • 还可以在b的命名空间中调用a命名空间中的函数
<?php

namespace a
{
    function hello()
    {
        return '命名空间' . __NAMESPACE__ . '<br>函数名称是:' . __FUNCTION__;
    }
}

namespace b
{
    function hello()
    {
        return \a\hello();
    }
}

namespace
{
    echo a\hello();     //调用a空间中的hello
    echo '<hr>';
    echo b\hello();     //b调用a空间中的hello
}



?>

运行结果

这里写图片描述

2.类的命名空间

  • 各自命名空间调用各自命名空间的函数
<?php

namespace a
{
    class A
    {
        public $name = 'mohuani';
        public function say()
        {
            $namespace = '命名空间:' . __NAMESPACE__;
            $className = '类名' . __CLASS__;
            $methodName = '方法名' . __METHOD__;
            return $namespace . '<br>' . $className . '<br>' . $methodName . '<br>' . $this->name;
        }
    }
}



namespace b
{
    class A
    {
        public $name = 'mohuani';
        public function say()
        {
            $namespace = '命名空间:' . __NAMESPACE__;
            $className = '类名' . __CLASS__;
            $methodName = '方法名' . __METHOD__;
            return $namespace . '<br>' . $className . '<br>' . $methodName . '<br>' . $this->name;
        }
    }
}

namespace
{
    echo (new a\A)->say();
    echo '<hr>';
    echo (new b\A)->say();
}



?>

运行结果

这里写图片描述

  • 在b的空间中调用a空间中的类
<?php

namespace a
{
    class A
    {
        public $name = '陌花拟';
        public function say()
        {
            $namespace = '命名空间:' . __NAMESPACE__;
            $className = '类名' . __CLASS__;
            $methodName = '方法名' . __METHOD__;
            return $namespace . '<br>' . $className . '<br>' . $methodName . '<br>' . $this->name;
        }
    }
}



namespace b
{
    class A
    {
        public $name = 'mohuani';
        public function say()
        {
            $namespace = '命名空间:' . __NAMESPACE__;
            $className = '类名' . __CLASS__;
            $methodName = '方法名' . __METHOD__;
            $temp = (new \a\A)->name;
            return $namespace . '<br>' . $className . '<br>' . $methodName . '<br>' . $temp;
        }
    }
}

namespace
{
    echo (new a\A)->say();
    echo '<hr>';
    echo (new b\A)->say();
}



?>

运行结果

这里写图片描述

3.常量的命名空间

  • const创建的常量,受命名空间的限制
  • define创建的常量,不受命名空间的限制
<?php

namespace a
{
    const SITE_NAME = '陌花拟';
    //define('SITE_NAME','陌花拟')
    //define创建的常量,不收命名空间的限制
}


namespace b
{
    const SITE_NAME = 'mohuani';
}

namespace
{
    echo a\SITE_NAME;
    echo '<hr>';
    echo b\SITE_NAME;
}


?>

运行结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值