php基础知识(3)(文件加载include)
文件加载
综述:
有4个文件加载的语法形式(注意,不是函数):
include, include_once, require, require_once;
他们的本质是一样的,都是用于加载/引入/包含/载入一个外部文件到当前php代码中来。
他们只在2个方面有细微区别:
1,如果加载文件失败,则有不同的处理规则;include和require不同
2,如果加载文件重复,则有不同的处理规则;XXX和XXX_once不同;
3,他们都是语法结构,而非函数,使用形式可以有两种:
3.1 include ‘文件路径’;
3.2 include (‘文件路径’);
文件路径问题
不管是哪个载入语法结构,都涉及到文件路径问题。主要有3种情况:
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
3,只有文件名(无路径)
在php的include语法(其他3个也一样)中,如果只给出文件名,而没有给出路径,则此时有其内部找到该文件的规则,如下:
1,首先在系统设置的include目录中查找:
在php.ini配置文件中,有:include_path设定:
可见默认无设定;
该设定其实可以设定多个目录,其间用分号分开;系统会按顺序依次找要载入的文件。
修改php.ini中的include_path为:
我们也可以在脚本中设定:
//设定配置文件中的include_path的值——代码中的设定只对当前代码有效。
//而且这里的设定,无需重启apache
set_include_path('C:/itcast/class/bj-php-34/day2');
我们也可以使用另一个函数来获取当前的include_path的值:
//更常见的做法:
$path = get_include_path(); //先获取系统的include_path值
$path_new = $path . PATH_SEPARATOR ."C:/itcast/class/bj-php-34/day2";
//PATH_SEPARATOR: 是系统常量,代表目录分割符:
// unix系列中,是“:”
// window系列中,是“;”
set_include_path($path_new); //再来设定“自己”想要加入的paht路径
//这样就不会破坏(丢失)原有路径设定
echo "<p>当前工作目录:" . getcwd() .'</p>'; //getcwd()获得当前工作目录
2,上面没找到,在当前执行的网页文件所在目录(所谓当前工作目录)查找:
所谓当前网页文件,就是地址栏中显示的那个文件名。
3,上面还没找到,则在当前include命令所在文件的所在目录中查找:
如果一个文件(A)包含文件B,在文件B中又有include命令包含文件C,
此时B中的路径问题就可能发生这种情况。
文件载入执行过程
- 从include语句处退出php脚本模式(进入html代码模式)
- 载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样)
- 退出html模式重新进入php脚本模式,继续之后的代码
举例:
4include_yuanli.php中:
page3.php中:
4include_yuanli.php中的代码,相当于:
几个区别:
- include_once 和include的区别:前者能够保证不会被重复加载
- require 和 include的区别:
- 如果被包含文件不,存在,即引用失败(出错)时,include发出警告并继续执行后续代码,require直接终止。
- require_once 和 require的区别:前者能够保证不会被重复加载
return关键字
以前,我们只在函数中出现return关键字,其作用是:结束函数,并可以返回数据;
return; //单纯结束;
return $x; //结束,并返回数据$x;
那么,
被包含(载入)的文件中的return 关键字也具有同样的作用!
结果:
再来看看return返回值的形式:
结果为:
php基础知识(3)(文件加载include)的更多相关文章
- php基础语法(文件加载和错误)
文件加载 有4个文件加载的语法形式(注意,不是函数): include, include_once, require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载 ...
- 13)PHP,文件加载(include和require)
有四种文件加载的语法形式(注意,不是函数): include, include_once, require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载入一个外部 ...
- Java基础之Throwable,文件加载
Java中的异常与错误都继承自Throwable,Exception又分为运行时异常(RuntimeException)和编译时异常. 运行时异常是程序的逻辑不够严谨或者特定条件下程序出现了错误,例如 ...
- php文件加载、错误处理、方法函数和数组
数组运算符注意:php中,数组的元素的顺序,不是由下标(键名)决定的,而是完全由加入的顺序来决定.联合(+):将右边的数组项合并到左边数组的后面,得到一个新数组.如有重复键,则结果以左边的为准$v1 ...
- JVM系列【3】Class文件加载过程
JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 Class文件加载过程 JVM加载Class文件主要分3个过程:Loadi ...
- 文件加载---理解一个project的第一步
当我最开始写php的时候,总是担心这个问题:我在这儿new的一个class能加载到对应的类文件吗?毕竟一运行就报Fatal Error,什么**文件没找到,类无法实例化等等是一种很“低级”的错误,怕别 ...
- Android 的 so 文件加载机制
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 最近碰到一些 so 文件问题,顺便将相关知识点梳理一下. 提问 本文的结论是跟着 System.loadlibrary() 一层层源 ...
- ELF文件加载与动态链接(一)
关于ELF文件的详细介绍,推荐阅读: ELF文件格式分析 —— 滕启明.ELF文件由ELF头部.程序头部表.节区头部表以及节区4部分组成. 通过objdump工具和readelf工具,可以观察ELF文 ...
- WPF 从文件加载字体
本文告诉大家从文件加载字体.在wpf 使用 fontfamily 显示指定的 ttf 显示字体 假如有字体在 C:\Projects\MyProj\free3of9.ttf ,可以使用 Private ...
随机推荐
- [lintcode the-smallest-difference]最小差(python)
题目链接:http://www.lintcode.com/zh-cn/problem/the-smallest-difference/ 给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 ...
- hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)
一.Criteria查询方式没有sql语了,因此更加面向对象一些.Criteria是一种比HQL更面向对象的查询方式:Criteria的创建方式: Criteria c = s.createCrite ...
- [转载]java的几种对象(PO,VO,DAO,BO,POJO)解释
原文地址:java的几种对象(PO,VO,DAO,BO,POJO)解释作者:munandong 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最 ...
- 转: sqlserver常用sql语句,更改字段,建立唯一键,多个字段去重复等
[sql] view plain copy print?在CODE上查看代码片派生到我的代码片 --修改字段类型: --alter table 表名 alter column 待修改字段名 待修改字段 ...
- UVa 1595 (水题) Symmetry
颓废的一个下午,一直在切水题,(ˉ▽ ̄-) 首先如果这些点是对称的话,那么它们的对称轴就是x = m,m是横坐标的平均值. 把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这 ...
- UVa 644 Immediate Decodability
吐槽下我的渣渣英语啊,即使叫谷歌翻译也没有看懂,最后还是自己读了好几遍题才读懂. 题目大意:题意很简单,就是给一些互不相同的由'0','1'组成的字符串,看看有没有一个字符串是否会成为另一个的开头的子 ...
- 一行JS代码,解决DedeCMS TAG标签错误输入符号问题
在维护内容的时候, Tag标签输入经常要来回切换输入法, 只能通过','号分隔. 中文用户, 输入法出来的经常是全角的, 经常弄错, 增加了检查的工作量, 现在只要一句JS代码, 就自动替换所有 ...
- 二分图带权匹配、最佳匹配与KM算法
---------------------以上转自ByVoid神牛博客,并有所省略. [二分图带权匹配与最佳匹配] 什么是二分图的带权匹配?二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值之和 ...
- AutoGenSystem
#coding=utf-8 # # AutoGenSystem # 声明: # 该软件主要是为了解决Android系统更新时,由于版本很多,管理起来复杂,容易出错,于是采用软件 # 自动对系统软件进行 ...
- HDU 1247 Hat’s Words (字符串匹配,暴力)
题意: 给出一堆单词,如果有一个单词可以分成左右串两个单词,并且在所给的一堆单词中存在,就是hat词,统计所有这样的词,并按字典序输出. 思路: 注意定义,一个hat词可以被两部分已经存在的词组成,那 ...