WEB安全之PHP基础(八):PHP目录操作、命名空间

WEB安全之PHP基础(八):PHP目录操作、命名空间

1.PHP目录操作

  • 目录操作
新建目录:mkdir(路径,权限,递归创建)
删除目录:rmdir()
移动(改名):rename()
获取目录内容:
//打开目录
目录句柄 = opendir()
//读取目录
文件名 = readdir(目录句柄)
依次读取文件名,同时向下移动文件句柄指针,读取不到则返回false
//关闭目录
closedir()
  • 创建一个目录
    在这里插入图片描述
  • 重命名
    在这里插入图片描述
    在这里插入图片描述
  • 删除目录
    在这里插入图片描述
    在这里插入图片描述
  • 当前目录’. ’ 表示,上级目录用’…'表示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 三个目录一个文件
  • 递归读取目录内容:
<?php
//递归遍历目录
$dirfile="c:/";

function tree($dirfile){
    $dir = opendir($dirfile);
    while (($file = readdir($dir)) !== false)
    {
        if(is_dir("$dirfile{$file}") && ($file !=".") && ($file !="..")){
            if(is_readable("$dirfile{$file}")){
                echo "目录 $dirfile{$file} </br>";
                tree("$dirfile{$file}");
            }else{
                echo "目录 $dirfile{$file} 不可访问</br>";
            }

        }
        else{
            if( ($file !=".") && ($file !="..")){
                echo "文件 $dirfile/{$file} </br>";
            }

        }
    }
    closedir($dir);
}

tree($dirfile);
?>
  • 打开目录,遍历目录
  • 输出所有文件目录
    在这里插入图片描述
    在这里插入图片描述
  • 如何判断它是目录还是文件呢
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 去掉最上面两行
    在这里插入图片描述
    在这里插入图片描述
  • 换到c盘
    在这里插入图片描述
  • 全部变成了文件
  • 因为路径不对,执行时在程序路径下
  • 要把绝对路径全都写进来
  • 在这里插入图片描述
    在这里插入图片描述
  • 遍历c盘中的目录中的目录或者文件,假若还有目录还会去遍历
    在这里插入图片描述
  • 当目录没有权限访问时,停止访问,就不会报错
    在这里插入图片描述
    在这里插入图片描述

2.命名空间

  • PHP 命名空间可以解决以下两类问题:
    1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
    2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,以提高源代码的可读性。

  • 命名空间(可以理解为创建文件夹)
    定义:命名空间namespace,是指人为的将内存进行分隔,让不同内存区域的同名结构共存,从而解决在大型项目中可能出现的重名结构的问题

  • 语法:namespace 空间名
    作用:不同的空间可以有同名的结构,如:类
    空间元素:函数,常量,类,不包括变量!!

  • 给定一个常量,没有被覆盖
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 若为变量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 这时内容被覆盖
    子空间(子文件夹)

  • 定义:命名空间内部再划分一个命名空间,让每个小空间独立起来

  • 语法:
    namespace 空间名
    namespace 空间名\子空间

  • 命名空间访问 (url)
    非限定名称访问:直接访问空间元素的名字(只访问自己命名空间的元素)
    限定名称访问:使用自己当前的子空间名字+ \ + 元素名字
    完全限定名称访问:\ + 全局空间 + \ + 元素名字

  • 注:任何空间元素访问,只针对函数,类,常量

  • 采用命名空间可以避免这个问题
    在这里插入图片描述

  • 建立子空间,常量、函数和类都是一样的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 导入demo4
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 先访问非限定名称
    在这里插入图片描述
    在这里插入图片描述

  • 限定名称访问
    在这里插入图片描述
    在这里插入图片描述

  • 访问当前命名空间
    在这里插入图片描述
    在这里插入图片描述

  • 也可以访问子空间的
    在这里插入图片描述
    在这里插入图片描述

  • 全局空间(C盘)
    如果定义了命名空间,非限定名称的寻找系统常量的方式:
    首先:在自己的空间内找
    然后:如果找不到元素

	系统常量-->进入全局空间寻找
	系统类 --> 不会自动进入全局空间寻找,而是会报错
  • 命名空间的引入
  • 1.空间引入方式:use关键字
	1. 引入类:use 空间名\类名
	2. 引入函数:use function 空间名\函数名
	3. 引入常量:use const 空间名\常量名
  • 想访问demo4中的常量如何访问
    在这里插入图片描述
    在这里插入图片描述
  • 2.当引入元素时重名,通过 as 来起别名
use 空间名\类名 as 别名
  • 引入命名空间导入时,记住要定义常量
    在这里插入图片描述
    在这里插入图片描述
  • 别名
    在这里插入图片描述
    在这里插入图片描述
  • 3.引入多个元素
	use 空间名\{
		类名,
		function 函数名,
		const 常量
	}   	
  • 导入一个类
  • 定义一个类,调用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 引入常量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 引入一个函数
    在这里插入图片描述
    在这里插入图片描述
  • 实例化一个类
    在这里插入图片描述
    在这里插入图片描述
  • 或者利用完全限定名称访问
    在这里插入图片描述
    在这里插入图片描述
  • 4.引入空间
    use 空间名
  • 定义一个方法,返回当前命名空间的值给我们
    在这里插入图片描述
    在这里插入图片描述
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值