PHP命名空间

mac2025-03-16  10

文章目录

命名空间定义关键字 namespace使用命名空间命名空间子空间命名空间路径命名空间`use`使用

命名空间

定义

PHP5.3.0 新增的一种封装事物的方法,解决编写的类库或应用程序时命名冲突的问题,类似window系统的文件夹

关键字 namespace

必须声明命名空间,必须处于程序脚本的第一条语句,即声明前不能有任意的字符输出,如空格或html标签等;命名空间中可以包含任意合法的php代码,受命名空间影响的有类、函数、常量PHP >=5.3.0 开始支持namespace 可以代表当前空间,类似类中的self;namespace\Home\Student()

创建一个namespace.php文件

<?php //声明一个App的命名空间 namespace App //1 定义一个类 class student{ private $name = "小德"; private $age = "28"; public function __construct(){ echo "{$this->name}的年龄是{$this->age}岁"; } } //2 定义一个普通函数 function dump($target){ var_dump($target); } //3 定义一个局部常量 const WHO = "rufeike"; //4 其他任意代码 $a = 1000; ?>

使用命名空间

使用时需要指定空间名称命名空间与类、函数、局部常量间使用\分割;普通代码 变量、常量不在命名空间中

在当前目录创建一个index.php,引入上面的创建的namespace.php文件,进行测试使用

<?php //包含namespace.php 文件 require_once("./namespace.php"); //1 创建学生类对象 //注意:直接使用会报错,需要在类前指定命名空间App/Student /* 报错信息: Fatal error: Uncaught Error: Class 'Student' not found in C:\Users\rufeike\Desktop\phasher\test\index.php:3 Stack trace: #0 {main} thrown in C:\Users\rufeike\Desktop\phasher\test\index.php on line 3 */ $student = new App\Student(); //2 调用dump方法 App\dump("hello world!"); //使用局部变量 echo App\WHO; //普通代码可以直接使用 echo $a;

命名空间子空间

使用\斜线分割子空间。如 Home\Controller\Student();

定义

<?php //创建 App\Home\Controller的命名空间 namespace App\Home\Controller; class Student{ ..... }

使用

<?php $student = new App\Home\Controller\Student();

命名空间路径

文件系统中访问文件的方式 相对文件名形式:如:a.txt ,会在当前执行文件的所在文件夹中查找a.txt;相对路径名形式:如:sub/a.txt ,会在当前执行文件的所在文件夹中查找sub文件夹,再在sub中查找a.txt;绝对路径名形式:如:/main/a.txt ,会从根目录(window系统中,会从执行文件的所在盘符中)开始查找main文件夹,再在main中查走a.txt; 访问命名空间中的元素方式 非限定名称(不带任何前缀)。$obj = new User(),会在单前空间中查找限定名称(带相对空间的前缀)。$obj = new Home\User(),会在当前空间找子空间Home中的User类完成限定名称(从根空间开始)。$obj = new \Home\User(),会从根空间开始查找Home中的User类

命名空间use使用

使用use关键字 use App\Student;如果引入类与当前空间的类起冲突时,可以使用as起别名;如use App\Student as Stu;使用use引入后,可以直接使用类名称;$student = new Student()
最新回复(0)