语法说明: (1)namespace 是声明空间的关键字,不区分大小写 (2)SpaceName 是定义的空间名称,命名方式与类名相同 (3)所有代码都可以存在与空间中 (4)只有类、函数、常量代码会受到空间影响
代码例子: namespace.php
<?php //声明一个命名空间 namespace App; //(1)定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } //(2)定义一个函数 function showInfo(){ echo "PHP命名空间函数"; } //(3)定义一个常量 const DB_HOST="localhost"; //(4)定义一个变量 $a=1000;app.php
<?php //声明页面字符集 header("content-type:text/html;charset=utf-8"); //(1)包含文件 require_once("./namespace.php"); //(2)创建学生类对象 $obj=new App\Student(); //(3)调用showInfo()函数 App\showInfo(); echo "<br>".App\DB_HOST; echo "<br>".$a;文件夹可以有子目录的情况,命名空间也有子空间情况。
目录的分隔符为斜杠(/),命名空间路径的分隔符是反斜杠()。 举例:App\Home\Controller代码例子: namespace02.php
<?php //声明一个命名空间 namespace App\Home\Controller; //(1)定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } //(2)定义一个函数 function showInfo(){ echo "PHP命名空间函数"; } //(3)定义一个常量 const DB_HOST="localhost"; //(4)定义一个变量 $a=1000;app02.php
<?php //声明页面字符集 header("content-type:text/html;charset=utf-8"); //(1)包含文件 require_once("./namespace02.php"); //(2)创建学生类对象 $obj=new App\Home\Controller\Student(); //(3)调用showInfo()函数 App\Home\Controller\showInfo(); echo "<br>".App\Home\Controller\DB_HOST; echo "<br>".$a;建议:一个文件不要定义多个空间。
代码例子: namespace03.php
<?php //声明第1个命名空间 namespace App\Home\Controller; //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } //声明第2个命名空间 namespace App\Home\Model; //定义一个学生类 class Student{ private $name="小红"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } }app03.php
<?php //声明页面字符集 header("content-type:text/html;charset=utf-8"); //(1)包含文件 require_once("./namespace03.php"); //(2)创建学生类对象 $obj1=new App\Home\Controller\Student(); $obj2=new App\Home\Model\Student();提示:用大括号把空间代码括起来; -保持一致。要加大括号,所有空间都加大括号;不加大括号,所有空间都不加。
<?php //声明第1个命名空间 namespace App\Home\Controller{ //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } } //声明第2个命名空间 namespace App\Home\Model{ //定义一个学生类 class Student{ private $name="小红"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } }如果一个文件用大括号语法定义多个命名空间,如果要写全局代码,还不想把全局代码加到某个命名空间中,该怎么写? namespace.php
<?php //声明第1个命名空间 namespace App\Home\Controller{ //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } } //声明第2个命名空间 namespace App\Home\Model{ //定义一个学生类 class Student{ private $name="小红"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } } //声明第3个匿名空间(全局代码、根空间代码) namespace { //定义一个教师类 class Teacher{ public function __construct(){ echo "定义一个教师"; } } }app.php
<?php //声明页面字符集 header("content-type:text/html;charset=utf-8"); //(1)包含文件 require_once("./namespace.php"); //(2)创建学生类对象 $obj1=new App\Home\Controller\Student(); $obj2=new App\Home\Model\Student(); $obj3=new Teacher();限定名称-代码例子:
<?php //声明第1个命名空间 namespace App{ //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } //创建学生类对象(非限定访问方式) $stuObj=new Student(); //创建教师类对象(限定访问方式) $staObj=new Home\Teacher(); //创建教师类对象(完全限定访问方式) $staObj=new \APP\Home\Teacher(); } //声明第2个命名空间 namespace App\Home{ //定义一个教师类 class Teacher{ private $name="小红"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } }例子代码:
<?php //声明第1个命名空间 namespace App{ //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } //创建学生类对象,namespace就代表APP空间名 $stuObj=new namespace\Student(); //创建教师类对象,namespace就代表APP空间名 $staObj=new namespace\Home\Teacher(); //声明第2个命名空间 namespace App\Home{ //定义一个教师类 class Teacher{ private $name="小红"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } }描述:获取当前命名空间的字符串名称。
代码例子:
<?php //声明第1个命名空间 namespace App{ //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } } //构建类名:"App\Student" $className = __NAMESPACE__."\Student"; //创建学生类对象 $stuObj=new $className(); }代码例子: namespace.php
<?php //声明第1个命名空间 namespace App\Home\Controller; //定义一个学生类 class Student{ private $name="小明"; public function __construct(){ echo "我的名字叫:{$this->name}<br>"; } }app.php
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)包含文件 require_once("./namespace.php"); //(2)导入空间,默认的空间别名为最后一个单词 use \App\Home\Controller; $obj=new Controller\Student(); //(3)导入空间并起别名 use \App\Home\Controller as Cont; $obj=new Cont\Student(); //(4)导入空间中的类,默认的类名为最后一个单词 use \App\Home\Controller\Student; $obj=new Student(); //(5)导入空间中的类,并起别名 use \App\Home\Controller\Student as Stu; $obj=new Stu();