10. PHP中文件加载
2016-05-22 15:27
417 查看
这一篇博客主要讲文件加载的四种形式(
include
include_once
require
require_once
它们的本质是一样的都是用于加载/引入/包含/载入一个外部文件到当前php代码中来。
他们只在2个方面有细微区别:
xxx_once 和xxx的区别:前者能够保证不会被重复加载
require 和 include的区别:如果被包含文件不存在,即引用失败(出错)时,include发出警告并继续执行后续代码,require直接终止。
它们都是语法结构,而非函数,使用形式可以有两种:
include ‘文件路径’;
include(‘文件路径’)
./ 表示当前网页文件的所在位置(文件夹,目录);
../ 表示当前网页文件的所在位置的上一级位置(文件夹,目录)
这种相对位置对一个网站中的所有内容(包括php,html,图片,css,js文件)都有效
window系统: c:/d1/d2/page3.php
unix系列系统: /d1/d2/page3.php
网络绝对路径: http://www.abc.com/d1/d2/page4.php
可见默认无设定;该设定其实可以设定多个目录,其间用分号分开,系统会按顺序依次查找要载入的文件。修改php.ini中的include_path为
我们也可以在脚本中设定:
此时B中的路径问题就可能发生这种情况。
载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样)
退出html模式重新进入php脚本模式,继续之后的代码
return; //单纯结束
return x;//结束,并返回数据x; //结束,并返回数据x
那么,被包含(载入)的文件中的return关键字也具有同样作用
main.php
page1.php
page2.php
include,include_once,require,require_once)
1. 综述
有四种文件加载的形式(不是函数)include
include_once
require
require_once
它们的本质是一样的都是用于加载/引入/包含/载入一个外部文件到当前php代码中来。
他们只在2个方面有细微区别:
xxx_once 和xxx的区别:前者能够保证不会被重复加载
require 和 include的区别:如果被包含文件不存在,即引用失败(出错)时,include发出警告并继续执行后续代码,require直接终止。
它们都是语法结构,而非函数,使用形式可以有两种:
include ‘文件路径’;
include(‘文件路径’)
2. 文件路径问题
2.1 相对路径
就是以”./”,或”../”,开头的路径./ 表示当前网页文件的所在位置(文件夹,目录);
../ 表示当前网页文件的所在位置的上一级位置(文件夹,目录)
这种相对位置对一个网站中的所有内容(包括php,html,图片,css,js文件)都有效
2.2 绝对路径
本地绝对路径:window系统: c:/d1/d2/page3.php
unix系列系统: /d1/d2/page3.php
网络绝对路径: http://www.abc.com/d1/d2/page4.php
2.3 只有文件名(无路径)
在php的include语法(其他3个也一样)中,如果只给出文件名,而没有给出路径,则此时有其内部找到该文件的规则,如下:2.3.1. 首先在系统设置的include目录中查找:
在php.ini配置文件中,有:include_path设定:;windows:"\path1;\path2" ;include_path = ".;C:\php\includes"
可见默认无设定;该设定其实可以设定多个目录,其间用分号分开,系统会按顺序依次查找要载入的文件。修改php.ini中的include_path为
;windows:"\path1;\path2" ;include_path = ". ;C:\php\includes; C:\users\chang\test"
我们也可以在脚本中设定:
<?php //设定配置文件中的include_path的值,代码中的设定只对当前代码有效 //而且这里的设定无需重启apache set_include_path('C:\users\chang\test') //更常见的做法 $path = get_include_path();//先获取系统的include_path值 $path_new = $path . PATH_SEPARATER . "C:\users\chang\test"; //PATH_SEPARATER:是系统常量,代表目录分隔符 //unix系列:":" //windows系列:";" set_include_path($path_new);//这样不会丢失原有的路径设置
2.3.2 上面没找到,在当前执行的网页文件所在目录(所谓当前工作目录)查找:
所谓当前网页文件,就是地址栏中显示的那个文件名。2.3.3 上面还没找到,则在当前include命令所在文件的所在目录中查找:
如果一个文件(A)包含文件B,在文件B中又有include命令包含文件C,此时B中的路径问题就可能发生这种情况。
3. 文件载入执行流程
从include语句处退出php脚本模式(进入html代码模式)载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样)
退出html模式重新进入php脚本模式,继续之后的代码
4. return关键字
return 关键字的一般作用return; //单纯结束
return x;//结束,并返回数据x; //结束,并返回数据x
那么,被包含(载入)的文件中的return关键字也具有同样作用
main.php
<?php echo "main中第一行"; include 'page1.php'; echo "main中第二行"; $n = include 'page2.php';//将page4执行结果返回给$n echo "主文件中n=$n"
page1.php
<?php echo "page1中第一行"; echo "page1中第二行"; return; echo "page1中第三行";
page2.php
<?php $m = 10; echo "page2中第一行"; echo "page2中第二行"; return $m; echo "page2中第三行";
相关文章推荐
- PHP $_SERVER
- PHPer书单
- 配置vsftpd配合filezilla使用
- PHP环境搭建
- 9.PHP中的流程控制结构
- switch php version between 5.6 and 7.0 in Ubuntu
- php和Java的区别是什么
- FTP服务器上删除文件夹失败
- php之IDE phpstrom 介绍
- PHP 中 9 大缓存技术总结
- php-fpm 老是warning 进程退出问题
- php的介绍及Php有什么优势?
- 使用SeasLog打造高性能日志系统
- PHP strip_tags保留多个HTML标签的方法
- 一个Laravel队列引发的报警
- Yii2.0 模态弹出框+ajax提交表单
- 工具篇之FTP And Office
- php连接Mysql 环境搭建
- php文件上传后端处理小技巧
- 文件上传小技巧/后端处理【以php示例】