开发者学堂课程【PHP 基础入门课程(下):文件包含实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/710/detail/12648
文件包含实现
内容介绍:
一、概念
二、步骤
三、示例
四、小结
一、概念
PHP 提供了四种文件包含的方式:都可以实现文件的包含
1、include'文件名(include('文件名))
2、require'文件名'
3、include_once'文件名'
4、require_once'文件名'
这里 include 是包含,require 是必须要求,once 就是一次的意思。
二、步骤
1、明确当前文件要做的事情
⑴数据或者结构提供者(结构或者配置文件)
⑵数据显示者(HTML 模板)
⑶逻辑处理者(用户请求的逻辑处理代码)
2、给不同的文件提供不同的内容
3、在逻辑处理脚本上确定文件引入的目的
⑴使用被包含文件的数据或者结构:提前包含
⑵将当前处理结果进行显示:最后包含
4、应用
⑴提前包含(向上包含):直接在逻辑处理代码中应用被包含文件的数据或者结构
⑵最后包含(向下包含):在被包含文件中写代码使用逻辑处理脚本里的数据(被包含之前的所有数据)
这是什么意思?比如,逻辑处理者既包含了数据显示器,又包含了数据或者结构提供者。那么这个被包含进的数据也可以在另一个被包含的文件里使用,因为被包含进来就都是一个整体了,就相当于一根绳上的蚂蚱。
三、示例
需求:在 HTML 中显示用户的个人信息
1、数据提供者:data.php中保存数据)
#data.php
Sinfo = [
'name'=>'乌哥',
'age'=> 40,
'gender'=>'男'
];
2、数据显示者:list.html(模板)
<html>
<head>
<title>显示个人信息</title>
</head>
<body>
姓名:
年龄:
性别:
</body>
</htm1>/
3、逻辑处理者:controller.php
#想要使用:data.php 中的数据
include 'data.php'
;
#逻辑处理:判定等:可以使用 data.php 中的数据,因为是先包含
#想要显示数据:list.html,只能在1ist,hml 使用上面的所有数据(不管是包含,还是当前脚本产生的)
include 'list.html'
:
逻辑处理脚本(浏览器请求的脚本)自始至终都只做处理逻辑,不做其他事情(不提供数据、不进行显示)
既然要显示数据,就需要在数据显示者中利用 PHP 显示数据(list.html)
<html>
<head>
<tit1e>显示个人信息</title>
</head>
<body>
<!--当前文件为 HTML 后缀,但是不独立运行会被 PHP 包含,所以可以嵌入 PHP 代码-->
姓名:<?php echo $info['name'];?>
年龄:<?php echo $info['age'];?>
性别:<?php echo $info['gender'];?>
</body>
</html>
举例:此时新建一个,然后输入50data.php
,这就是数据提供者。
<?php
#数据提供文件(不会被访问,只会被 PHP 文件包含)
$info = [
'name'=>‘犬夜叉',
'age'=> 100,
'gender'=>'公'
];
那么数据就有了,这时要注意浏览器是不会请求这个文件的。 因为这个文件请求没有意义,没有输出。
然后把它关掉,此时我们再做第二个文件。
输入51list.html:
<html>
<head>
<title>显示个人信息</title>
</head>
<body>
姓名:
年龄:
性别:
</body>
</html>
这个文件也不会被请求。但是 html 不是就是被请求的?没错,这是因为以前里面信息是死的,所以直接请求可以拿到信息。但是现在这个信息需要动态获取,所以一般就不会直接获取,那么此时就需要一个中间角色,能够真正被请求处理。
输入52controller.php:
<?php
#业务逻辑处理
#获取数据(自己处理或者从其他地方拿到数据)
include '50data.php';
#逻辑处理:权限判定、安全、操作正确性
#显示数据
require '51list.html';
这里要做的事情,第一步就是业务逻辑处理, 然后得到数据知道用户要干嘛,所以要获取数据,获取数据可以自己处理或者从其它地方拿到数据,通常第二种居多。
那怎么拿呢,数据在哪,是不是在50data.php 面,所以利用include '50data.php'
把这个文件包含进来。这就相当于有了一个数组。
第二步是逻辑处理,比如权限、安全、操作正确性,这些都是需要去考虑的。
第三步是显示数据。因为显示数据不是 php 的想象,所以要包含 require,这里只是证明两个都可以。然后输入'51list.html'
,有了这个东西之后,相当于逻辑处理就做完了。
此时访问访问我的逻辑处理,请求会发现,模板里面的东西显示出来了,但是没有显示数据。
这是因为缺一步,我们要在的逻辑处理里加载这个文件之后,在对应的模板里面使用 php 代码。就相当于在 php 里面写一样,去显示这些数据。
首先,姓名要显示的需要用 php 代码写。
姓名:<?php $info['name'];?>
这个 info 是之前已经有的。
然后同样的代码复制,
姓名:<?php $info['name'];?>
年龄:<?php $info['age'];?>
性别:<?php $info['gender'];?>
这个代码写完之后,保存。再来看浏览器,因为已经把数据放在模板上了。这时发现还是没有数据。
然后把 require 换成 include,发现还是没有。
也就是说前面的 php 代码没有生效,所以这里需要一个 echo。
姓名:<?php echo $info['name'];?>
年龄:<?php echo $info['age'];?>
性别:<?php echo $info['gender'];?>
再次打开浏览器,刷新发现数据显示出来了。
这就是文件的包含的使用形式。
数据负责提供数据,模板负责显示数据,所有的业务逻辑都由自己判断。数据是否正确,都有验证。
四、小结
1、实现文件包含有四种方式
⑴include 和 include_once
⑵require 和 require_once
2、文件包含看对于被包含文件的需求分为
⑴先包含:为了使用被包含文件中的数据或者结构
⑵后包含:为了将当前所有数据给被包含文件使用
①被包含文件通常是为了显示数据
②可以不用管是什么格式,但是需要用 PHP 标签和语法来输出数据