PHP namespace(一)

命名空间的作用域

1.函数的namespace

  • 各自命名空间调用各自命名空间的函数
namespace a
{
    function hello()
    {
        return '命名空间' . __NAMESPACE__ . '
函数名称是:'
. __FUNCTION__; } } namespace b { function hello() { return '命名空间' . __NAMESPACE__ . '
函数名称是:'
. __FUNCTION__; } } namespace { echo a\hello(); //调用a空间中的hello echo '
'
; echo b\hello(); //调用b空间中的hello } ?>

运行的结果

PHP namespace(一)_第1张图片

  • 还可以在b的命名空间中调用a命名空间中的函数
namespace a
{
    function hello()
    {
        return '命名空间' . __NAMESPACE__ . '
函数名称是:'
. __FUNCTION__; } } namespace b { function hello() { return \a\hello(); } } namespace { echo a\hello(); //调用a空间中的hello echo '
'
; echo b\hello(); //b调用a空间中的hello } ?>

运行结果

PHP namespace(一)_第2张图片

2.类的命名空间

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


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

运行结果

PHP namespace(一)_第3张图片

  • 在b的空间中调用a空间中的类


namespace a
{
    class A
    {
        public $name = '陌花拟';
        public function say()
        {
            $namespace = '命名空间:' . __NAMESPACE__;
            $className = '类名' . __CLASS__;
            $methodName = '方法名' . __METHOD__;
            return $namespace . '
'
. $className . '
'
. $methodName . '
'
. $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 . '
'
. $className . '
'
. $methodName . '
'
. $temp; } } } namespace { echo (new a\A)->say(); echo '
'
; echo (new b\A)->say(); } ?>

运行结果

PHP namespace(一)_第4张图片

3.常量的命名空间

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


namespace b
{
    const SITE_NAME = 'mohuani';
}

namespace
{
    echo a\SITE_NAME;
    echo '
'
; echo b\SITE_NAME; } ?>

运行结果

PHP namespace(一)_第5张图片

你可能感兴趣的:(php)