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 空间名 - 定义一个方法,返回当前命名空间的值给我们