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 ...
随机推荐
- 总结Selenium自动化测试方法(四)WebDriver常用的操作
四.WebDriver常用的操作 1.控制浏览器操作 #控制浏览器的大小 self.driver.set_window_size(480,800) #控制浏览器返回 self.driver.back( ...
- 手机号段、ip地址归属地大全,最新手机号段归属地,IP地址归属地数据库
百事通:http://www.114best.com/dh/114.aspx?w=17097232323,联通识别为电信的,1349错 二三四五:http://tools.2345.com/frame ...
- java double保留小数点的零的问题,java保留小数点问题
1.用DecimalFormat格式化,DecimalFormat df=new DecimalFormat("0.00"); System.out.println(df.form ...
- Codeforces Round #272 (Div. 2) C. Dreamoon and Sums (数学 思维)
题目链接 这个题取模的时候挺坑的!!! 题意:div(x , b) / mod(x , b) = k( 1 <= k <= a).求x的和 分析: 我们知道mod(x % b)的取值范围为 ...
- Nginx proxy_pass 加与不加 "/" 区别
下面四种情况分别用http://192.168.1.100/proxy/test.html 进行访问. 第一种: location /proxy/ { proxy_pass http://127.0 ...
- R语言处理大规模数据集的编程要点
1.提高程序效率,保证执行速度 (1)尽量使用向量化运算 (2)尽量使用矩阵,必要时才使用数据框 (3)使用read.table时,尽量显式设定colClasses和nrows,设定comment.c ...
- UVa 1607 (二分) Gates
这道题真的有点“神”啊.= ̄ω ̄= 因为输入都是x,所以整个电路的功能一共就四种:0, 1, x,!x 所以就确定了这样一个事实:如果电路的输出是常数,那么所有的输入都可以优化成常数. 否则,只需要将 ...
- 51nod1257 背包问题 V3
分数规划经典.开始精度1e-3/1e-4都不行,1e-5就A了 #include<cstdio> #include<cstring> #include<cctype> ...
- 解决android sdk manage打开闪退的解决方法
在打开android sdk mangage.exe的时候,一闪而过,在eclipse中出现如下提示: [2015-07-20 13:42:23 - SDK Manager] [SDK Manager ...
- S2sh整合MAven项目所需坐标大全
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> & ...