## 1、打开文件fopen()
* 描述:打开文件或者 URL
* 语法:
```
resource fopen ( string $filename , string $mode )
```
* 参数:$filename,指定要打开的目标文件或URL;$mode,指定文件的打开方式。
* 提示:为移植性考虑,在用 fopen()打开文件时总是使用 'b' 标记。binary
* 返回值:成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。
![](https://img.kancloud.cn/b9/0c/b90c71d6994ecca5bc1e770b1628cd02_714x121.png)
以写入方式打开,它自动创建文件
![](https://img.kancloud.cn/fa/40/fa40a302e510f98b543293ba43650232_744x118.png)
## 2、打开文件的方式
![](https://img.kancloud.cn/3d/c9/3dc9d986ec5b83cdca1d38a5e0525f8d_635x320.png)
## 3、关闭文件fclose()
* 描述:关闭一个已打开的文件指针
* 语法:
```
bool fclose ( resource $handle )
```
* 参数:$handle必须是由fopen()打开的文件指针。
![](https://img.kancloud.cn/af/f0/aff0d8fe92d4e454c8854f47912bd115_666x187.png)
## 4、读取指定大小文件内容fread()
* 描述:读取文件(可安全用于二进制文件)
* 语法:
```
string fread ( resource $handle , int $length )
```
* 参数:$handle是由fopen()创建的handle;$length最多读取的字节数。
* 提示:在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上 ‘b’。
* 返回值:返回所读取的字符串, 或者在失败时返回 FALSE。
![](https://img.kancloud.cn/f5/0a/f50a741dcf84cd90df428b659a0e9c64_872x492.png)
## 5、读取一行内容fgets()
* 描述:从文件指针中读取一行
* 语法:
```
string fgets ( resource $handle [, int $length ] )
```
* 参数:
$handle:文件指针必须是有效的
$length:从 handle指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
* 返回值:从指针 handle 指向的文件中读取了 length - 1 字节后返回字符串。 如果文件指针中没有更多的数据了则返回 FALSE。
![](https://img.kancloud.cn/a5/33/a53359631d1bdbece79c54723f165b55_983x376.png)
## 6、读取文件内容到数组中file()
* 描述:把整个文件读入一个数组中
* 语法:
```
array file ( string $filename [, int $flags = 0 ] )
```
* 参数:
$filename,文件的路径;
$flags,附加选项;
FILE_USE_INCLUDE_PATH(1):在include_path 中查找文件;
FILE_IGNORE_NEW_LINES(2):在数组的每个元素末尾不添加换行符;
FILE_SKIP_EMPTY_LINES(4):跳过空行。
* 注意:不需要打开文件和关闭文件。
![](https://img.kancloud.cn/99/a3/99a3f318c3d7ca3ab02514b1418c5917_535x139.png)
![](https://img.kancloud.cn/1e/fd/1efd47c238882f8adaa0e52c688334e5_779x241.png)
## 7、读取文件内容到字符串中file_get_contents()
* 描述:将整个文件读入一个字符串 ,不用打开文件,也不用关闭文件
* 语法:
```
string file_get_contents ( string $filename )
```
* 返回:返回读取的数据,或在失败时返回false。
![](https://img.kancloud.cn/1d/1f/1d1f31bcf75a1f7ebbd625a6a0b55891_956x334.png)
## 8、实例:读取记事本中的内容,并用表格展示出来
![](https://img.kancloud.cn/39/c4/39c4d79388aa34f2587401caeced4a76_467x154.png)
![](https://img.kancloud.cn/f0/40/f0405f5fef33c498d22ab2e7d5a0450d_894x573.png)
## 9、写入文件
* 描述:写入文件(可安全用于二进制文件)
* 语法:
```
int fwrite ( resource $handle , string $string )
```
* 返回:返回写入的字符数,出现错误时则返回 FALSE 。
![](https://img.kancloud.cn/eb/ef/ebef772d4d3e593533627010c5e46e43_1016x244.png)
## 10、将一个字符串写入文件
* 描述:和依次调用 fopen(),fwrite()以及 fclose() 功能一样。
* 语法:
```
int file_put_contents ( string $filename , mixed $data [, int $flags = 0] )
```
* 参数:
$filename要被写入数据的文件名。
$data要写入的数据。类型可以是 string,array(一维数组)。
$flags附加选项。
FILE_USE_INCLUDE_PATH(1) 在 include 目录里搜索 filename
FILE_APPEND(8)如果文件 filename已经存在,追加数据而不是覆盖。
LOCK_EX(2)在写入时获得一个独占锁。
* 提示:如果文件不存在,则会自动创建。如果文件过大,不能一次性处理。
* 返回:该函数将返回写入到文件内数据的字节数,失败时返回FALSE。
![](https://img.kancloud.cn/72/2c/722c69641054a984ccd0e1e12a7546dc_708x197.png)
## 11、拷贝文件
* 描述:将文件从 source 拷贝到 dest。
* 语法:
```
bool copy ( string $source , string $dest )
```
* 提示:如果目标文件存在,则会覆盖。
![](https://img.kancloud.cn/ed/d5/edd539a1f866242940d33b634e045882_583x96.png)
## 12、删除文件
* 语法:
```
bool unlink ( string $filename )
```
* 返回:成功时返回 TRUE, 或者在失败时返回 FALSE。
* 提示:可以删除虚拟空间之外的文件,但必须使用相对路径(../),但必须有权限。
* 注意:删除的文件不会进入回收站。
![](https://img.kancloud.cn/a0/7b/a07b44d56da94d357d3e4814842334b0_601x75.png)
## 13、其它的文件操作函数
* filesize(),可以获取文件大小,单位为字节。
* is_writable(),判断文件是否可写。
* is_readable(),判断文件是否可读。
* feof(),判断文件指针是否到达文件结尾。
* filectime(),获取创建文件的时间。
* fileatime(),获取文件最新访问时间。
* filemtime(),获取文件最后修改时间。
- 1、CMD下MySQL操作
- 1.1具体步骤
- 1.2使用phpMyAdmin导入数据库
- 1.3PHP连接MySQL服务器
- 1.4选择当前数据库
- 1.5设置客户端字符集
- 1.6执行各种SQL语句
- 1.7从结果集获取一行数据
- 1.8获取记录数
- 1.9综合案例:学生信息管理
- 1.10PHP处理复选框数据
- 2、PHP操作目录、文件
- 2.1PHP操作目录
- 2.2综合实例:递归遍历phpMyAdmin下的所有条目
- 2.3PHP操作文件
- 2.4综合实例:递归删除phpMyAdmin目录
- 3、PHP分页、HTTP协议
- 3.1PHP数据分页
- 3.2HTTP协议概述
- 3.3HTTP协议之URL
- 3.4HTTPWatch抓包工具使用
- 3.5HTTP协议之请求
- 3.6HTTP协议之响应
- 3.7综合案例:实现视频文件下载
- 4、图像处理、文件上传
- 4.1图像处理概述
- 4.2创建图像和销毁图像
- 4.3图像操作
- 4.4实例:图像验证码
- 4.5实例:往图像上写入一行汉字
- 4.6实例:制作图像水印效果
- 4.7实例:生成图像缩略图
- 4.8文件上传
- 4.9实例:单个文件上传
- 4.10实例:多个文件上传
- 5、COOKIE和SESSION
- 5.1COOKIE概述
- 5.2COOKIE操作
- 5.3COOKIE设置
- 5.4删除COOKIE数据
- 5.5COOKIE的总结
- 5.6SESSION概述
- 5.7SESSION操作
- 5.8SESSION对应COOKIE的配置(php.ini)
- 5.9SESSION垃圾回收机制
- 6、实践:在线相册
- 6.1准备工作
- 6.2创建数据库
- 6.3用户登录功能
- 6.4显示照片列表
- 6.5添加照片
- 6.6显示照片详细信息
- 7、面向对象
- 7.1什么是面向过程的编程思想
- 7.2什么是面向对象的编程思想?
- 7.3类和对象的关系
- 7.4类的定义
- 7.5类的成员属性定义
- 7.6类的成员方法定义
- 7.7创建类的实例对象
- 7.8对象属性操作
- 7.9对象方法操作
- 7.10伪变量$this的使用
- 7.11类常量的定义
- 7.12构造方法
- 7.13析构方法
- 7.14静态属性和静态方法
- 7.15OOP中内存的分配情况
- 7.16类的封装性
- 7.17类的继承性
- 7.18类的多态
- 7.19最终类和最终方法
- 7.20抽象类和抽象方法
- 7.21接口技术
- 7.22类的自动加载
- 7.23对象克隆
- 7.24对象遍历
- 7.25常用魔术方法
- 7.26面向对象的设计模式
- 7.27综合案例:学生信息管理系统
- 7.28工厂设计模式
- 7.29重载
- 7.30变量序列化
- 7.31常用的魔术常量
- 8、命名空间和PDO
- 8.1静态延时绑定
- 8.2命名空间概述
- 8.3使用命名空间
- 8.4namespace关键字
- 8.5命名空间元素的导入和别名
- 8.6PDO概述
- 8.7PDO对象常用方法
- 8.8PDOStatement对象常用方法
- 8.9PDO错误处理
- 8.10SQL语句预处理
- 9、Smarty模板引擎
- 9.1模板引擎的工作原理
- 9.2Smarty快速入门
- 9.3Smarty配置
- 9.4Smarty模板(视图)中的变量
- 9.5Smarty循环——foreach
- 9.6Smarty循环——section循环
- 9.7Smarty条件判断——if语句
- 9.8Smarty变量调节器
- 10、MVC框架
- 10.1MVC框架思想原理
- 10.2MVC实例:学生信息管理
- 10.3MVC第1个版本:整合学生模块和新闻模块
- 10.4MVC第2个版本:基础模型类的实现
- 10.5MVC第3个版本:工厂模型类
- 10.6MVC第4个版本:控制器类的实现
- 10.7MVC第5个版本:添加学生信息
- 10.8MVC第6个版本:控制器类的进一步优化
- 10.9MVC第7个版本:删除新闻数据
- 10.10MVC第8个版本:基础控制器类实现
- 10.11MVC第9个版本:学生信息修改
- 10.12MVC第10个版本:文件简单分目录
- 10.13MVC第11个版本:前端控制器实现
- 10.14MVC第12个版本:平台概念的引入
- 10.15MVC第13个版本:类的自动加载
- 10.16MVC第14个版本:常用目录常量配置
- 10.17MVC第15个版本:初始类实现
- 11、Blog系统实战
- 11.1项目开发流程
- 11.2博客系统概述
- 11.3博客项目的MVC目录结构
- 11.4博客项目MVC框架搭建
- 11.5学生信息管理(前台)
- 11.6学生信息管理(后台)
- 11.7封装PDOWrapper类
- 11.8PDOWrapper类与MVC框架整合
- 11.9工厂模型类方法的实现
- 11.10封装自己的Smarty类
- 11.11博客项目后台——首页管理
- 11.12博客项目后台——用户管理
- 11.13博客项目后台——用户登录
- 11.14图像验证码类
- 11.15用户登录——引入图像验证码
- 11.16用户访问权限(简单权限)
- 11.17博客项目后台首页相关信息修改
- 11.18博客项目后台——用户退出
- 11.19博客项目后台——友情链接管理
- 11.20文章类别管理
- 11.21文章管理
- 11.22前台首页管理
- 11.23列表页管理
- 11.24内容页管理