第十五节 PHP操作文件

PHP操作文件-分为打开文件-读取文件-写入文件和关闭文件四步

Last Updated on

PHP操作文件:分为打开文件,读取文件,写入文件和关闭文件四步。为了方便学习,本节课开始引入词汇表项目,当访客查看词汇表时,能够搜索词汇,项目要求admin组成,要有保存数据功能,先把数据保存在json文件。所以我们需要有保存功能,读取传递需要用到PHP程序。然后我们将数据序列化为JSON结构,以便我们保存它。

PHP如何操作文件-词汇表项目文件结构和代码

创建4.2_working_with_files并把4.1文件复制过来。

第一步:修改index.php代码

注释view_bag变量,创建$data变量,通过调用get_data()函数获取我们的数据,我们可以指定文件名,我们并不很需要针对这个特定的应用,因为我们仅仅使用的唯一文件是数据文件,我们不是打开几个不同的文件,所以我们需要一个通用的功能。我们需要一个用于打开数据文件,并且数据文件的名称最好放置于config文件内部,所以让我们创建一个名为config.php的新文件。

第二步:创建Config.php

第三步:index.php把config.php引进来

这样引进来看起来感觉很好,但是当我们添加其他控制器时,我们将不得不再次要求相同的文件,然后当我们添加更多文件时,我们能不能把这些东西处理得更好呢?所以我们可以做的是创建app文件来处理应用程序所有需要的文件。

第四步:创建app.php文件

把index.php的require文件改为:

这样,其它任何controller只要引入一个app.php文件即可。这样在我们的controller就不会忘记文件的引入了,因为我们把所有需要引入的文件全部放到app.php文件。

第五步:把应用程序的中心文件放到app文件夹

创建app文件夹,把app.php,config.php,functions.php放到app文件夹,修改index.php添加app.php路劲:

这样看起来,我们词汇表项目文件结构和代码干净很多。

PHP如何操作文件-编写get_data函数

第一步:config.php编码

第二步:functions.php编码

编写get_data()函数

第一种方法:代码稍长

程式解释

  1. 检查文件是否存在file_exists,把文件名作为参数传递file_exists()函数
  2. 创建fname变量存储获取过来的CONFIG[‘data_file’]的健或值;
  3. 我们使用$fname变量,如果文件存在,我们就fopen,并要添加打开这个文件的模式:阅读,写入……(php manual关于文件处理部分),处理好之后,我们要fclose文件
  4. 我们是get_data()函数,这里是json结构的数据,我们需要读取它,把它保存到$json变量中:$json = ”;
  5. 如果文件不存在,我们就要创建一个可读的文件$json,fread传递$handle进来,声明数据读取的大小:filesize($fname);
  6. 返回json: return json。

第二种写法:不需要处理handles

刷新index.php报错:

第一条报错信息提醒文件不存在导致的,把代码file_exists($fname)改为!file_exists($fname)不存在即可解决

刷新第一个错误没有了,第二个报错信息提醒找不到json常量,把return json;添加$改为return $json;即可解决。

第三步:添加数据到data.json文件

data.json文件被创建,我们在data.json文件创建一些资料

[JavaScript][
{
“term”:”js”,
“definition”:”javascript”
},
{
“term”:”html”,
“definition”:”超文本标记语言”
},
{
“term”:”php”,
“definition”:”超文本预处理器”
}
][/JavaScript]

第四步:把data.json的数据传递到index.php的视图

刷新页面输出结果显示:

我们得到json的数据结构,这正是我们想要的显示结果。

Last modified: 2019年11月14日

前一篇

PHP和MySQL:使用PDO查询

Last Updated on 2019年11月14日在我们的PHP代码中,我们使用PDO(PHP数据对象)来 …

...

后一篇

PHP零基础入门

第十四节 代码逻辑分离

代码逻辑分离:也叫做代码前后端分离让应用程序的每一个函数只负责做一件事情,我们要用控制器(controller),放置到一个叫controller.php的文件.

...