背景:
如果在平时中我们去require一个一个的php文件,不会存在多大的问题。
但是设想这样一个场景:如果有两个php文件中存在一样的class名字,那么同时调用的时候,就会出现报错信息.因为根本不知道你调用的是哪一个具体的class名字.
下面有具体的demo.
这个时候引入新的一个概念:命名空间namespace.
新建一个a.php b.php c.php
a.php
class Hello { public static function show() { echo "this is a show"; } }
b.php
class Hello { public static function show() { echo "this is b show"; } }
c.php
require_once("a.php"); require_once("b.php"); $hello=new Hello();
当执行的时候会报错
为了解决这个引入名字相同类和方法,我们引入一个命名空间
先上代码后面再放结论
a.php
<?php namespace name\a; class Hello { public static function show() { echo "this is a show"; } }b.php
<?php namespace name\b; class Hello { public static function show() { echo "this is b show"; } }c.php
<?php require_once("a.php"); require_once("b.php"); use name\b; use name\a; $hello1=new a\Hello(); $hello2=new b\Hello(); $hello1::show(); echo "<br/>"; $hello2::show();结果
结论
1.命名空间必须在第一行。
2.命名空间必须有层级,至少为2层。
3.当引入命名空间后,可以解决因为相同名字的类或方法报错的问题。