Browse Source

异常处理,文件目录操作

master
kuangweijian 3 years ago
parent
commit
bde05817a1
  1. 0
      07面向对象/05重载/__get.php
  2. 4
      07面向对象/05重载/__set.php
  3. 3
      07面向对象/11重载.php
  4. 20
      11自动加载类/autoload.php
  5. 6
      11自动加载类/classA.php
  6. 6
      11自动加载类/classB.php
  7. 3
      13会话控制Cookie/01-设置Cookie.php
  8. 4
      13会话控制Cookie/note.txt
  9. 31
      14错误和异常处理/01try_catch_throw.php
  10. 39
      14错误和异常处理/02继承异常类.php
  11. 10
      14错误和异常处理/03致命错误Error类.php
  12. 7
      14错误和异常处理/04-error_log.php
  13. 14
      14错误和异常处理/05-set_error_handler.php
  14. 8
      14错误和异常处理/06-错误控制运算符.php
  15. 0
      14错误和异常处理/file
  16. 18
      15文件目录操作/01-fopen.php
  17. 9
      15文件目录操作/02-readfile.php
  18. 22
      15文件目录操作/03-文件上传.php
  19. 26
      15文件目录操作/04目录操作.php
  20. 4
      15文件目录操作/fileA

07面向对象/05魔术方法/__get.php → 07面向对象/05重载/__get.php

07面向对象/05魔术方法/set.php → 07面向对象/05重载/__set.php

3
07面向对象/11重载.php

@ -0,0 +1,3 @@
<?php
?>

20
11自动加载类/autoload.php

@ -0,0 +1,20 @@
<?php
/*
* new时,若类未定义,回去别的文件找这个类
* 类文件的名称需要与类名相同
*/
spl_autoload_register
(
function($className)
{
include_once("./{$className}.php");
}
);
$obj = new classA(); //因为classA在autoload.php中未定义,当new时,会自动调用spl_autoload_register函数,并且传递类名
echo $obj->str.'<br>';
$obj2 = new classB();
echo $obj2->str.'<br>';
?>

6
11自动加载类/classA.php

@ -0,0 +1,6 @@
<?php
class classA
{
public $str = 'hello';
}
?>

6
11自动加载类/classB.php

@ -0,0 +1,6 @@
<?php
class classB
{
public $str = 'world';
}
?>

3
13会话控制Cookie/01-设置Cookie.php

@ -0,0 +1,3 @@
<?php
?>

4
13会话控制Cookie/note.txt

@ -0,0 +1,4 @@
会话控制的思想就是允许服务器跟踪同一个客户端做出的连续请求
Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件

31
14错误和异常处理/01try_catch_throw.php

@ -0,0 +1,31 @@
<?php
/*
* 首先执行 tyr{}里的代码,如果try{}有错误抛出(throw + Exception实例),那么执行catch中的代码
* 公式
try{
// 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $e){ // $e 为一个异常类的对象
// 输出错误信息
}
*/
try
{
if (1) {
echo '判断正确后的执行代码'.'<br>';
}else{
$errMsg = '这是一条抛出异常信息'; //异常信息
$errCode = '101'; //异常代码
throw new Exception($errMsg, $errCode); //实例一个Exception类,抛出
echo 'throw后的代码'.'<br>';
}
}
catch (Exception $e) //捕捉异常, 为什么实例$e有try{}中 new Exception中的信息?
{
echo '异常信息:' . $e->getMessage() . '<br>';
echo '异常代码:' . $e->getCode() . '<br>';
}
echo '继续执行 try catch 以外的代码';
?>

39
14错误和异常处理/02继承异常类.php

@ -0,0 +1,39 @@
<?php
class emailException extends Exception{
function __toString()
{
return "email is null ".$this->getFile().' '.$this->getLine().'<br>';
}
}
class nameException extends Exception{}
function reg($reg){
if (empty($reg['email'])) { //如果数组reg里键email的值是空的
throw new emailException("email is null",1);//2.抛出异常后推出了函数
}
echo "-----".'<br>'; //代码没有执行到这里
if (empty($reg['name'])) {
throw new nameException('name is null',2);
}
echo "-----".'<br>';
}
try {
$reg = array('phone'=>'12344544');
reg($reg); //1.传入的数组里没有eamil和name
} catch (emailException $e) { //3.捕获的是email is null这个异常
echo $e;
} catch (nameException $e) { //代码没有进入这个catch
echo $e->getMessage().'<br>';
echo $e->getCode().'<br>';
} finally { //4.最后进入finally
echo "finally";
}
?>

10
14错误和异常处理/03致命错误Error类.php

@ -0,0 +1,10 @@
<?php
try {
$a=new cat();
} catch (Error $e) {
echo $e->getMessage().'<br>';
echo $e->getLine().'<br>';
}
$b=new eat();
?>

7
14错误和异常处理/04-error_log.php

@ -0,0 +1,7 @@
<?php
$link=mysqli_connect("ip","user","passwd","db");
if (!$link) {
error_log("myslq连接失败",0);
exit();
}
?>

14
14错误和异常处理/05-set_error_handler.php

@ -0,0 +1,14 @@
<?php
function error_handler($errno,$errstr,$errfile,$errline){
echo "errno".$errno.'<br>';
echo "errstr".$errstr.'<br>';
echo "errfile".$errfile.'<br>';
echo "errline".$errline.'<br>';
die("something error");
}
set_error_handler("error_handler");
//产生一个用户级别的error
trigger_error("this is a error") //当异常发生时,自动调用自定义函数error_handler
?>

8
14错误和异常处理/06-错误控制运算符.php

@ -0,0 +1,8 @@
<?php
$link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
//如果去掉@,会显示错误信息
//Warning: mysqli_connect(): (HY000/1045): Access denied for user 'my_user'@'localhost' (using password: YES) in D:\code_software\xampp\htdocs\php_demo\14错误和异常处理\06-错误控制运算符.php on line 2
//如果加上@,则不会显示
?>

0
14错误和异常处理/file

18
15文件目录操作/01-fopen.php

@ -0,0 +1,18 @@
<?php
$file = "./file";
//判断文件是否存在
$ret = file_exists($file);
echo $ret.'<br>';
//打开文件
$ret = fopen($file,"r");
echo $ret.'<br>';
//关闭文件
$ret = fclose($ret);
echo $ret.'<br>';
?>

9
15文件目录操作/02-readfile.php

@ -0,0 +1,9 @@
<?php
//打开并读取文件的全部内容
$buf = readfile("./file");
echo $buf.'<br>';
/**
* 疑问:这个缓冲区buf有多大?
*/
?>

22
15文件目录操作/03-文件上传.php

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>C语言中文网——PHP文件上传</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fileA">
<input type="submit" value="上传">
</form>
</body>
</html>
<?php
if(!empty($_FILES)){
foreach ($_FILES['fileA'] as $key => $value) {
echo $key.'=>'.$value.'<br>';
}
}
//显示成功了,但在文件夹中没有找到对应文件
?>

26
15文件目录操作/04目录操作.php

@ -0,0 +1,26 @@
<?php
$dir = "./dir1/";
//创建目录
mkdir($dir);
//打开目录
$dirinfo = opendir($dir);
echo $dirinfo;
//读取目录
while($file=readdir($dirinfo) !== false){
echo $file.'<br>';
}
//读取目录
$arr = scandir($dir);
echo "<pre>";
print_r($arr);
//关闭目录
closedir($dirinfo);
//删除空目录
rmdir($dir);
?>

4
15文件目录操作/fileA

@ -0,0 +1,4 @@
窗前明月光
$filename:要读取的文件名或文件路径;
$use_include_path:可选参数,用来设定是否想要在 include_path 中搜索该文件,默认为 FALSE;
$context:Stream 上下文(context)。
Loading…
Cancel
Save