PHP笔记(PHP中级篇)

时间:2021-10-06 02:33:15

初级了解PHP的语法,中级就要学习PHP操作DateBase以及各种复杂的实现了!

文件系统处理

  • 作用:
    • 项目需要
    • 长时间保存数据
    • 服务器中文件操作
  • 特点
    • 都是使用系统函数完成的
    • 基于Linux/Unix为模型
  • 文件处理
    • 文件类型
      • 在Windows中,只能获取file、dir、unknow类型
      • 在Linux中,可获取block、char、dir、fifo、file、link、unknow类型
        • block:块设置文件,就是一些储存数据, 以提供系统随机存取的接口设备
        • char:字符设备文件,即串行端口的接口设备
        • dir:目录文一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题
        • file:普通的文件类型
        • link:与Windows下的快捷方式相似
        • unknown:其他文件
      • filetype($string):获取文件类型
      • 使用is_*判断文件类型及权限,如is_dir(是否目录)、is_file(是否文件)等
    • 文件属性:以当前目录为基准

      • file_exists($file):判断文件是否存在
      • filesize($file):获取文件大小
      • is_file($file):判断是否为文件
      • is_readable($file):判断文件是否可读
      • is_writable($file):判断文件是否可写
      • is_executable($file):判断文件是否可执行
      • filectime($file):文件的创建时间
      • fileatime($file):文件的访问时间
      • filemtime($file):文件的修改时间
      • stat($file):返回文件的状态
    • 与文件目录相关
      • /
        • 表示根目录
          • 在服务器中,根在文档根目录
          • 在客户端中,根在系统根目录
        • 路径分隔符
      • basename($url):获取路径文件名
      • dirname($url):获取路径目录部分
      • pathinfo($url):返回数组,包含路径及文件的信息
    • 文件打开与关闭
      • 文件读取
        • file_get_contents($file):读取文件的内容,返回字符串
        • file($file):读取文件,返回数组,文件中的一行字符串将成为数组的一个元素
        • readfile($file):读取文件并直接输出
      • 文件写入
        • file_put_contents($file,$string):如果存在文件,写入文件覆盖原来内容,如果不存在,则创建文件并写入内容
      • 文件打开
        • fopen($file,mode):打开文件,返回资源
          • r:以读形式打开文件
          • r+:读+写,文件不存在,会出错
          • w:以写的形式打开文件,若文件不存在,则创建文件,若文件存在,则清除内容
          • w+:写+读
          • a:以写的形式打开文件,若文件不存在,则创建文件,若文件存在,则在文件末尾追加内容
          • a+:写+读
          • b:以二进制模式打开文件(图片、电影等)
          • t:以文本方式打开文件(Windows才有效)
        • fwrite($resource,$string):向打开的资源中写入内容
        • fread($resource):读取文件指定大小
        • fgetc($resource):一次读取文件一个字符
        • fgets($resource):一次读取文件一行内容
        • feof($resource):检测文件读取是否已到末尾,若已到末尾,返回true
        • 读取未知大小文件
        • PHP笔记(PHP中级篇)
        • ftell($resource):返回指针当前位置
        • fseek($resource,$int):移动指针相应字符
        • rewind($resource):复位文件指针
      • 文件关闭 
        • fclose($file):关闭文件
          • 若不使用此函数,脚本结束后,才关闭
          • 没有关闭的资源不能再打开
    • 权限设置有关的函数
      • filegroup($file):返回文件所属组
      • fileowner($file):返回文件所有者
      • chgrp($file,$group):改变文件所属组
      • chmod($file,$int):改变文件模式,$int为四个数字,第一个必须为0,其余三个依次为所有者权限、组权限和其他*限
      • chown($file,$owner):改变文件拥有者
    • 文件操作
      • 创建文件:touch($file)
      • 删除文件:unlink($file)
      • 移动/重命名文件:rename($oldfile,$newfile)
      • 复制文件:copy($oldfile,$newfile)
    • 文件锁定
      • flock($resource,lock,block):给文件上锁和解锁
        • LOCK_SH:读取锁,共享锁
        • LOCK_EX:写入锁,独占锁
        • LOCK_UN:解锁
        • LOCK_NB:防止锁定时堵塞
  • 目录处理
    • 目录的遍历
      • opendir($dirname):打开目录文件
      • readdir($resource):读取目录中的文件,返回指针所在的文件名
      • rewinddir():复位目录指针
      • closedir():关闭目录资源
    • 目录的创建
      • mkdir($dir):新建空目录
    • 目录的删除
      • rmdir($dir):删除空目录
      • 删除非空目录,自定义函数
    • 目录的复制
      • 系统并未提供,需自定义
    • 目录的移动/重命名
      • rename($old,%new):将旧的目录移动到新目录位置,并更名
    • 目录的统计
  • 文件上传和下载
    • 上传
      • php.ini配置
        • file_uploads = on
        • upload_tmp_dir    //上传的临时目录,脚本结束时,文件会删除
        • upload_max_filesize    //允许文件上传的最大值
        • post_max_size    //Php可接收的post数据的最大值,设置需大于upload_max_filesize
      • 上传表单需要注意事项
        • 表单的提交方法必须为http post,即method = 'post'
        • 上传需要使用type = 'file'
        • form标签中的enctype = 'multipart/form-data'
      • PHP处理上传的数据
        • $_FILES接收上传的数据,$_POST接收非上传的数据
        • 使用$_FILES[name]['error']检查上传错误
          • 0表示无错误,1~7代表各种错误,可翻查手册
        • 使用$_FILES[name]['size']限制文件大小
        • 使用$_FILES[name]['type']或扩展名限制文件类型
          • 建议使用扩展名
        • 将上传后的文件改名
          • $_FILES[name]['tmp_name'],可获取上传文件的路径
          • 可使用年月日时分秒+三个数字作为文件名
        • 将文件从临时目录拷到指定目录
          • 使用is_uploaded_file()函数判断是否上传函数
          • 使用move_uploaded_file()函数移动上传文件
        • 建议添加<input type='hidden' name='MAX_FILE_SIZE' value='设定值'>,用于提示用户文件超出最大值
    • 下载
      • 使用header("Content-Disposition: attachment; filename=$file_name")指定要下载的文件
      • 使用输出函数将文件信息输出,如readfile()
      • PHP笔记(PHP中级篇)

错误处理

  • 语法错误
    • 脚本停止运行,返回错误信息
  • 运行时错误
    • 脚本继续运行,返回错误信息
  • 逻辑错误
    • 脚本继续运行,没有错误信息
  • E_ERROE
  • E_WARMING
  • E_NOTICE
  • 错误写入到日志中
    • 错误被屏蔽时,将被写入日志中
    • log_errors=on,设置日志功能开启
    • error_log可设置错误日志所在目录

※建议:开发时,输出所以错误;运行时,不输出任何错误

※ini_get():获取配置文件的值

※ini_set():修改配置文件的值

异常处理

  try{

  }catch(异常对象){

  }

  • 如果try{}内的代码没有问题,则不执行catch(){}内的代码
  • 如果try{}内的代码有问题,则暂停try{}内的代码,执行catch(){}内的代码,在继续执行try{}内的代码
  • catch(){}最好能解决try{}内的问题,如果不行,建立友好提示
  • throw抛出异常,如throw new Exceptiong("这是一个异常")
  • 自定义异常
    • 必须继承Exception类
    • 只能覆盖父类的构造方法和toString方法

日期和时间

  • UNIX时间戳
    • 以32位整数表示格林威治标准时间,单位是秒
    • 起始时间为1970年1月1日0时0分0秒
    • 时间范围:1970-2038
    • 主要作用:方便计算使用
  • 获取日期和时间
    • time():获取当前时间戳(一般存储、计算使用)
    • getdate($time):获取时间的信息
    • gettimeofdate()
    • date_sunrise()
    • date_sunset()
  • 日期和时间的格式化输出
    • date($string,$time):将时间戳$time转换为$string格式输出
      • 将时间戳转换为用户看得懂的格式,常用于显示输出使用
  • 将日期和时间转变为UNIX时间戳
    • mktime():将时分秒月日年转换为时间戳
      • 如果时间越界,会自动校正
  • 修改php的默认时区
    • 在php.ini中修改date.timezone
    • 使用date_fault_timezone_set($string)设置默认时区(PHP5后使用)
  • 使用微秒计算php脚本执行时间
    • microtime($bool):返回当前时间戳及微秒数,当$bool为true时,返回一个浮点数,整数部分表示时间戳,小说部分表示微秒

PHP图像处理

  1. 安装GD库
  2. 开启GD库,将php.ini中extensionextension_dir="ext"和extension=php_gd2.dll前的“;”去掉
  • 画图:验证码、统计图
    1. 创建画布----创建资源类型----高度和宽度
      1. imagecreatetruecolor($width,$height):创建指定大小画布
      2. 定制各种颜色
        1. imagecolorallocate($res,$red,$green,$blue):创建颜色
        2. imagefill($res,$x,$y,$color):与坐标($x,$y)点颜色相同且相邻的点都会被填充
    2. 绘制图像
      1. 每个图形对应一个函数
        1. imagefilledrectangle()(imagerectangle()):画一个矩形,有颜色填充(无颜色填充)
        2. imageline():画一条直线
        3. imagechar():水平画一字母
        4. imagecharup():垂直画一字母
        5. imagestring():水平画一字符串
        6. imagestringup():垂直画一字符串
        7. imagettftext():以特定字体合角度画一字符串
    3. 输出/保存处理好的图像
      1. header('content-type:image/*'):告诉浏览器,这是一个图片文件,否则会当作文本文件处理
      2. image*($res,[$url]):如不使用第二个参数,则输出浏览器,输入第二个参数,设置保存的位置
    4. 释放资源
      1. imagedestory($res):释放资源
  • 处理原有的图像:图片缩放、加水印、电子相册
    • 创建图片资源
      • 创建什么类型的图片就用相应的函数
        • imagecreateform*():创建相应类型图片
    • 获取图片属性
      • imagesx($res):获取图片的宽度
      • imagesy($res):获取图片的高度
      • getimagesize($url):获取图片的信息,包括宽度、高度、类型等
    • 处理图片
      • 与画图的绘制图像一致
      • 图片等比例缩放
        • imagecopyresized($ dst_image,$ src_image,$ dst_x,$ dst_y,$ src_x,$,src_y,$ dst_w,$ dst_h,$ src_w,$ src_h):处理速度比较快,但效果比较粗糙

        • imagecopyresampled($ dst_image,$ src_image,$ dst_x,$ dst_y,$ src_x,$,src_y,$ dst_w,$ dst_h,$ src_w,$ src_h):处理速度比较慢,但效果比较好
      • header("content-type:image/jpeg");
        
            $image = './image/Peacock.jpg';
        $nSize = 0.5; list($width,$height) = getimagesize($image);
        $nWidth = $nSize*($width);
        $nHeight = $nSize*($height); $n_img = imagecreatetruecolor($nWidth,$nHeight); //设置画布
        $o_img = imagecreatefromjpeg($image); imagecopyresampled($n_img,$o_img,0,0,0,0,$nWidth,$nHeight,$width,$height); //将图片缩小为$nWidth、$nHeight的图片,并输出至画布中
        imagejpeg($n_img); imagedestroy($o_img);
        imagedestroy($n_img);

        透明处理

        • png、jpeg透明色都正常,只有gif不正常
        • imagecolortransparent($res,$color):将某颜色设置为透明色
        • 用fillcolor()将画布设置为透明
        • header("content-type:image/gif");
          
              $image = './image/cir.gif';
          $nSize = 0.5; list($width,$height) = getimagesize($image);
          $nWidth = $nSize*($width);
          $nHeight = $nSize*($height);
          $n_img = imagecreatetruecolor($nWidth,$nHeight); //设置画布 $color=imagecolorallocate($n_img,255,255,255); //设置白色
          imagecolortransparent($n_img,$color); //设置白色为透明色
          imagefill($n_img,0,0,$color); //用透明色填充画布
          $o_img = imagecreatefromgif($image); imagecopyresampled($n_img,$o_img,0,0,0,0,$nWidth,$nHeight,$width,$height); //将图片缩小为$nWidth、$nHeight的图片,并输出至画布中
          imagegif($n_img); imagedestroy($o_img);
          imagedestroy($n_img);
      • 图片裁剪
        • 使用imagecopyresized()和imagecopyresampled()进行裁剪
      • 添加水印
        • imagealphablending($res,$bool):$bool设置为true,开启混色模式
        • 文字水印
          • 使用imagettftext()将文字输入图片中
        • 图片水印
          • 使用imagecopy()将图片水印复制到图片中
      • 图片的旋转
        • imagerotate():设置图片逆时针旋转一定角度
      • 图片翻转
        • 沿y轴旋转
          • 使用imagecopy()将图片沿y轴拷贝
        • 沿x轴旋转
          • 使用imagecopy()将图片沿x轴拷贝
      • 锐化:原理是将原来的颜色取出,将颜色加深
        • imagecolorat():取得某位置的颜色
        • imagecolorforindex():取得某颜色的rgb值,返回数组
    • 输出/保存图片
      • image*($res,[$url]):如不使用第二个参数,则输出浏览器,输入第二个参数,设置保存的位置
    • 销毁图片
      • imagedestory():销毁图片

※可使用<img> 标签直接引用

PHP笔记(PHP中级篇)的更多相关文章

  1. SQL笔记:中级篇

    1.LIMIT 查询前多少条数据 例如:查询user表前三条数据 SELECT * FROM  user LIMIT 3 ORACLE:  SELECT name FROM user WHERE RO ...

  2. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  3. AngularJS in Action读书笔记6&lpar;实战篇&rpar;——bug hunting

    这一系列文章感觉写的不好,思维跨度很大,原本是由于与<Angularjs in action>有种相见恨晚而激发要写点读后感之类的文章,但是在翻译或是阐述的时候还是会心有余而力不足,零零总 ...

  4. 25个增强iOS应用程序性能的提示和技巧&lpar;中级篇&rpar;&lpar;3&rpar;

    25个增强iOS应用程序性能的提示和技巧(中级篇)(3) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...

  5. 25个增强iOS应用程序性能的提示和技巧&lpar;中级篇&rpar;&lpar;2&rpar;

    25个增强iOS应用程序性能的提示和技巧(中级篇)(2) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...

  6. 25个增强iOS应用程序性能的提示和技巧--中级篇

    25个增强iOS应用程序性能的提示和技巧--中级篇 标签: ios性能优化内存管理 2013-12-13 10:55 738人阅读 评论(0) 收藏 举报  分类: IPhone开发高级系列(34)  ...

  7. Python3学习&lpar;2&rpar;-中级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...

  8. django-url调度器-中级篇

    在初级篇中,我们接触了: 1.url 的简单编写 2.两种传参的方式 3.捕获的参数总是字符串 4.为视图设置默认参数 …… 在中级篇中将更进一步. 包含其它的URLconfs 当网站非常大的时候,将 ...

  9. Noah的学习笔记之Python篇:命令行解析

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

  10. Noah的学习笔记之Python篇:函数&OpenCurlyDoubleQuote;可变长参数”

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

随机推荐

  1. OC基础--多态 及 三特性小练习

    什么是多态 什么是多态: 多态就是某一类事物的多种形态 猫: 猫-->动物 狗: 狗-->动物 男人 : 男人 -->人 -->动物 女人 : 女人 -->人 --&gt ...

  2. Android-调用优酷SDK上传视频

    最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路:   程序实现前我们先 ...

  3. Android Studio开发RecyclerView遇到的各种问题以及解决

    是大神总结的,我直接提供链接了,以便以后学习 大神链接: 问题一和解决:http://www.cnblogs.com/yunfang/p/5830953.html 问题二和解决:http://www. ...

  4. &lbrack;Swust OJ 352&rsqb;--合并果子&lpar;贪心&plus;队列模拟&rpar;

    题目链接:http://acm.swust.edu.cn/problem/352/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  5. WPF界面设计技巧(2)—自定义漂亮的按钮样式

    原文:WPF界面设计技巧(2)-自定义漂亮的按钮样式 上次做了个很酷的不规则窗体,这次我们来弄点好看的按钮出来,此次将采用纯代码来设计按钮样式,不需要 Microsoft Expression Des ...

  6. js运算符单竖杠&OpenCurlyDoubleQuote;&vert;”的作用

    在js整数操作的时候,相当于去除小数点,parseInt.在正数的时候相当于Math.floor(),负数的时候相当于Math.ceil() 注: 1. Math.ceil()用作向上取整. 2. M ...

  7. Servlet--HttpServletRequest接口,HttpServletResponse接口

    HttpServletRequest接口 定义 public interface HttpServletRequest extends ServletRequest; 用来处理一个对 Servlet ...

  8. RSA加密解密算法

    /** * RSA加密解密算法 * Class Rsa */ class Rsa { /** * 获取pem格式的公钥 * @param $public_key 公钥文件路径或者字符串 * @retu ...

  9. BZOJ-2298&vert;区间dp&vert;线段树

    problem a Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) Inpu ...

  10. AS错误&colon;Manifest merger failed with multiple errors&comma; see logs

    gradlew processDebugManifest --stacktrace 在as命令行输入 回车看到 往上滑, 就能看到错误的详细信息,图中这个错误应该不是我原来的错误,是因为我按照网上的方 ...