1 作用域
1.1 变量作用域
1、全局变量:在函数外面
2、局部变量:在函数里面,默认情况下,函数内部是不会去访问函数外部的变量
3、超全局变量:可以在函数内部和函数外部访问
| $GLOBALS
|
| — |
| $_SERVER |
| $_GET |
| $_POST |
| $_FILES |
| $_COOKIE |
| $_SESSION |
| $_REQUEST |
| $_ENV |
global关键字
1 |
|
小结:
1、$GLOBALS保存的是全局变量的所有的值
2、global用于创建一个全局变量的引用
💡 注意:常量没有作用域的概念
1.2 静态变量(static)
静态变量一般指的是静态局部变量。
静态变量只初始化一次
1.2.1 常量和静态变量的区别
1、常量和静态变量都是初始化一次
2、常量不能改变值,静态变量可以改变值
3、常量没有作用域,静态变量有作用域
1 |
|
1.3 匿名函数use()
默认情况下,函数内部不能访问函数外部的变量,但在匿名函数中,可以通过use将外部变量引入匿名函数中
1 |
|
思考:如何在函数内部访问函数外部变量
1、使用超全局变量
2、$GLOBALS
3、global
4、use将函数外部变量引入到匿名函数内部
2 递归
函数内部自己调用自己
递归有两个元素,一个是递归点(从什么地方递归),第二递归出口
3 包含文件
3.1 包含文件的方式
1、require:包含多次
2、include:包含多次
3、require_once: 包含一次
4、include_once: 包含一次
💡 小结:
1、require遇到错误抛出error类别的错误,停止执行
2、include遇到错误抛出warning类型的错误,继续执行
3、require_once、include_once只能包含一次
4、HTML类型的包含页面中存在PHP代码,如果包含到PHP中是可以被执行的
5、包含文件相当于把包含文件中的代码拷贝到主文件中执行,魔术常量除外,魔术常量获取的是所在文件的信息。
6、包含在编译时不执行、运行时加载到内存、独立编译包含文件
3.2 包含文件的路径
1 | ./ 当前目录 |
1 | require './head.html'; //在当前目录下查找 |
include_path的使用场景:
如果包含文件的目录结构比较复杂,比如:在c:\aa\bb\cc\dd中有多个文件需要包含,可以将包含的路径设置成include_path,这样包含就只要写文件名就可以了
1 |
|
include_path可以设置多个,路径之间用分号隔开
1 | set_include_path('c:\aa\bb\cc\dd;d:\\'); |
4 错误处理
4.1 错误的级别
- notice:提示
- warning:警告
- error:致命错误
notice和warning报错后继续执行,error报错后停止执行
4.2 错误的提示方法
方法一:显示在浏览器上
方法二:记录在日志中
4.3 与错误处理有关的配置
在php.ini中
1 | 1. error_reporting = E_ALL:报告所有的错误 |
在项目开发过程中有两个模式,开发模式,运行模式
1 | 开发模式:错误显示在浏览器上,不要记录在日志中 |
5 文件编程
5.1 文件夹操作
1 、创建文件夹【mkdir(路径,权限,是否递归创建)
】
1 | make:创建 |
例题
1 |
|
小结:
1、0777表示是文件夹的权限,在Linux中会详细讲解
2、true表示递归创建,默认是false
2、删除文件夹【rmdir()】
1 | //remove:移除 |
提醒:
1 | 1、删除的文件夹必须是空的 |
3、重命名文件夹【rename(旧名字,新名字)】
1 | rename('./aa','./aaa'); //将aa改为aaa |
4、是否是文件夹【is_dir()】
1 | echo is_dir('./aaa')?'是文件夹':'不是文件夹'; |
5、打开文件夹、读取文件夹、关闭文件夹
1 | $folder=opendir('./'); //打开目录 |
小结:
1 | 1、opendir()返回资源类型 |