PHP作用域 递归 包含文件 错误处理 文件变成汇总
1.2 作用域
1.2.1 变量作用域
1、局部变量:在函数外面
2、全局变量:在函数里面,默认情况下,函数内部是不会去访问函数外部的变量。
3、超全局变量:可以在函数的内部和外部访问。
<?php
$_POST['num']=10;
function fun(){
echo $_POST['num'];
}
fun();
?>
<?php
$num=10;
function fun(){
echo $GLOBALS['num'];
}
fun();
global关键字
小结:
1、$GLOBALS保存的是全局变量的所有的值
2、global用于创建一个全局变量的引用
注意:
常量没有作用域的概念
1.2.1 静态变量(static)
静态变量一般指的是静态局部变量。
静态变量只初始化一次。
常量和静态变量的区别
1、常量和静态变量都是初始化一次。
2、常量不能改变值,静态变量可以改变值
3、常量没有作用域,静态变量有作用域。
1.2.3 匿名函数use()
<?php
$num=10;
$fun=function() use($num){ //将函数引入到匿名函数中
echo $num;
}
fun(); //10
思考:如何在函数内部访问函数外部变量
1、使用超全局变量
2、$GLOBALS
3、global
4、use将函数外部变量引入到匿名函数内部
1.3 递归
函数内部自己调用自己
递归有两个元素,一个是递归点(从什么地方递归),第二递归出口
<?php
function printer($num){
echo $num.' ';
if($num==1) //递归出口
return;
printer($num-1); //递归点
}
printer(9); //9 8 7 6 5 4 3 2 1
小结:尽量少用递归,因为递归需要用到现场保护,现场保护是需要消耗资源的。
1.4 包含文件
1.4.1 包含文件的方式
1、require:包含多次
2、include:包含多次
3、require_once:包含一次
4、include_once:包含一次
<?php
include './head.html'; //包含文件
include_once './head.html';
小结:
1、require遇到错误抛出error类别的错误,停止执行
2、include遇到错误抛出warning类型的错误,继续执行
3、require_once、include_once只能包含一次
4、HTML类型的包含页面中存在PHP代码,如果包含到PHP中是可以被执行的
5、包含文件相当于把包含文件中的代码拷贝到主文件中执行,魔术常量除外,魔术常量获取的是所在文件的信息。
6、包含在编译时不执行、运行时加载到内存、独立编译包含文件
1.4.2 包含文件的路径
1.5.1 错误的处理级别
1、notice:提示
2、warning:警告
3、error:致命错误
notice和warning报错后继续执行,error报错后停止执行
1.5.2 错误的提示方法
方法一:显示在浏览器上
方法二:记录在日志中
1.5.3 与错误处理有关的配置
在php.ini中
1.5.4 自定义错误处理(了解)
通过trigger_error产生一个用户级别的error/warning/notice信息
注意:用户级别的错误的常量名中一定带有USER。
定义错误处理函数
function error(){
echo '这是自定义错误处理';
}
set_error_handle('error'); //注册错误处理函数,只要有错误就会自动的调用错误处理函数
echo $num;
1.6 文件变编程
1、创建文件夹
mkdir:创建
<?php
//1、创建目录
//mkdir('./aa/bb');
mkdir('./aa/bb/cc/dd',0777,true); //递归创建
2、删除文件夹
rmdir()
提醒:
删除的文件夹必须是空的
PHP基于安全考虑,没有提供递归删除
3、重命名文件夹 rename()
rename('./aa','./aaa'); //将aa改为aaa
4、是否是文件夹 is_dir()
echo is_dir('./aaa')?'是文件夹':'不是文件夹';
5、打开文件夹、读取文件夹、关闭文件夹
$folder=opendir('./'); //打开目录
//var_dump($folder); //resource(3) of type (stream)
while ($f=readdir($folder)){ //读取文件
if($f=='.'|| $f='..')
continue;
echo iconv('gbk','utf-8',$f),'<br>'; //将gbk转换为utf-8
}
for(::){
if($f=readdir($folder)){
if($f=='.' || $f=='..')
continue;
echo iconv('gbk','utf-8',$f),'<br>'; //将gbk转换为utf-8
}else{
break;
}
}
closedir($folder); //关闭文件夹
小结:
1、opendir()返回资源类型
2、每个文件夹中都有.和..
3、iconv()用来做字符编码转换
- 上一篇 »JAVA 注解的几大作用及使用方法详解
- 下一篇 »PHP 服务器端处理跨域问题