PHP namespace

#命名空间的作用域

1.函数的namespace

  • 各自命名空间调用各自命名空间的函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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命名空间中的函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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.类的命名空间

  • 各自命名空间调用各自命名空间的函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?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空间中的类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?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创建的常量,不受命名空间的限制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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;
}


?>

运行结果

这里写图片描述


PHP namespace
http://yoursite.com/2015/12/04/PHP/Laravel/PHP namespace(一)/
作者
mohuani
发布于
2015年12月4日
许可协议