四川省住房和城乡建设局网站,招聘网站怎么做市场,推广比较好的平台,wordpress需要授权吗PHP面向对象03#xff1a;命名空间一、命名空间基础二、子空间三、命名空间访问1. 非限定名称2. 限定名称3. 完全限定名称四、全局空间五、命名空间应用六、命名空间引入一、命名空间基础
namespace#xff0c;是指人为的将内存进行分隔#xff0c;让不同内存区域的同名结构…
PHP面向对象03命名空间一、命名空间基础二、子空间三、命名空间访问1. 非限定名称2. 限定名称3. 完全限定名称四、全局空间五、命名空间应用六、命名空间引入一、命名空间基础
namespace是指人为的将内存进行分隔让不同内存区域的同名结构共存。基本语法namespace 空间名字;作用能够创建同名结构包括函数、常量、类。 注意事项 命名空间的声明必须在所有代码之前。一个文件中只定义一个空间。
二、子空间
命名空间子空间通过namespace路径符号\实现
?php
# 创建一级空间
namespace my_space;# 创建子空间
namespace my_space\space1;也可以直接创建子空间
三、命名空间访问
1. 非限定名称
直接访问空间元素的名字此类访问的时当前代码所属空间内的元素。非限定名称访问就好比是访问当前自己文件夹下的所有文件。
?php
namespace my_space;
function show(){echo __METHOD__;
}
# 非限定访问
show();2. 限定名称
在访问元素的前面使用相应的空间名字限定名称访问时基于子空间来实现的。使用自己当前的子空间名字 \ 元素名称限定名称访问就好比是访问当前自己文件夹下的子文件夹内容。
?php
namespace my_space\space1;
function show(){echo __NAMESPACE__;
}namespace my_space;
function show(){echo __NAMESPACE__;
}# 限定名称访问
space1\show();3. 完全限定名称
从根目录全局空间开始访问使用\作为全局空间开始符号。完全限定名称访问就好比从磁盘根目录访问对应路径下的内容。
?php
namespace my_space\space1;
function show(){echo __NAMESPACE__;
}namespace my_space;
function show(){echo __NAMESPACE__;
}# 完全限定名称访问
\my_space\space1\show();四、全局空间
即空间元素在没有定义空间的情况下所属的空间也是所有定义的空间的顶级空间。全局空间没有名字。 所有的空间本质上都是在全局空间下划分的。全局空间元素的访问使用完全限定名称访问。 一旦命名空间出现那么空间元素的访问就被限定在空间内。如果使用非限定名称访问那么系统会以下解析逻辑 首先一定在自己空间内查找如果找不到元素不同空间元素的处理不同 系统常量、系统函数如果找不到会自动去全局空间找系统类不会自动取全局空间找而是直接报错 如果一个文件有空间包含了一个没有空间的文件那么要访问文件中的内容需要使用全局空间 \。
五、命名空间应用 创建文件夹 root根目录存放用户可以直接访问的文件比如入口访问controller里的文件。controller存放业务逻辑文件所有业务都是类文件业务需要操作数据库请求model里的文件。model存放数据库操作的类文件一张表一个类文件。core存放核心工具。 编写代码 /core/DB.php?php
namespace core;
class DB{public function __construct() {echo 数据库初始化 . -;}public function query() {echo 数据查询 . -;}
}/model/User.php?phpnamespace model;use core\DB;include_once __DIR__ . /../core/DB.php;class User {public function getAllUsers() {$sql select * from User;$db new \core\DB();$db-query($sql);echo 查询所有用户数据 . -;}
}/controller/User.php?phpnamespace controller;
include_once __DIR__ . /../model/User.php;class User {public function index() {$u new \model\User();$u-getAllUsers();echo 实现了用户业务操作 . -;}
}/index.php?phpinclude_once controller/User.php;$u new \controller\User();
$u-index();六、命名空间引入
命名空间引入就是将另外一个空间的元素类、函数和常量引入到当前空间来当作当前空间的元素访问从而可以减少复杂的完全限定名称访问取而代之的是非限定名称访问。use进行空间包含时默认是从全局空间开始构建空间路径。空间引入的元素默认是类如果要引入其他元素就必须使用响应关键字function和const如果引入空间元素与本空间元素重名使用as关键字。引入的多种情况 引入一个空间中的多个同种类、函数、常量元素可以使用,分隔。引入一个空间中的不同种元素使用use space\{Human, function show as my_show, const P};引入一个空间中的所有元素直接引入空间use space;但是会被当做子空间使用元素时需要使用限定名称访问不常使用不方便。
?phpnamespace space1;
class Man {public function __construct() {echo __METHOD__;}
}
function show() {echo __METHOD__;
}
const P 3;namespace space2;
// 引入空间元素
use space1\Man;
// 引入函数
use function space1\show as my_show;
// 引入常量
use const space1\P;$man new Man();
my_show();
echo P;