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 ...
随机推荐
- leetcode:Sort List(一个链表的归并排序)
Sort a linked list in O(n log n) time using constant space complexity. 分析:题目要求时间复杂度为O(nlogn),所以不能用qu ...
- URAL1091. Tmutarakan Exams(容斥)
1091 容斥原理 #include <iostream> #include<cstdio> #include<cstring> #include<algor ...
- [置顶] Android Provision (Setup Wizard)
Android中很多框架性的设计都已经存在了,但在市场上的发布版本里却因为没有很好的理解Android的设计意图而进行自己的定制,或者自己又做一 个冗余的实现.Android中的Provision其实 ...
- Python3 学习第十弹: 模块学习三之数字处理
math模块 提供基础的数学函数, cos(3.14) = -0.999..(弧度制) acos(1) = 0.0 sqrt(9) = 3.0 degrees(3.14) = 179.9999..(弧 ...
- github概念和实战
fork: 通过fork操作,你将拥有了别人创建的repo的ownership,但是url却变成了/youraccount/repo,这时你将可以做git push操作 clone: 该命令是直接将r ...
- Qt Creator快捷键
简介 Qt Creator中提供了各种快捷键来加快开发进程. 如果需要查看或自定义快捷键,选择工具->选项->环境->键盘.快捷键按类别列出,可以在过滤器(Filter)处输入命令名 ...
- HDU 1850 (Nim博弈 取胜方案数) Being a Good Boy in Spring Festival
考虑到Bouton定理的证明过程,设n个数的Nim和(异或和)为X,其最高位的1在第k位,那么n个数中一定有个y的第k为也是个1. 将y的数量变为X xor y,那么n的数的Nim和为0,便转为先手必 ...
- Hadoop实战课程
Hadoop生态系统配置Hadoop运行环境Hadoop系统架构HDFS分布式文件系统MapReduce分布式计算(MapReduce项目实战)使用脚本语言Pig(Pig项目实战)数据仓库工具Hive ...
- erl_0012 timer:tc 测试模块函数调用运行耗时
timer:tc 可以测试出函数调用耗时,是erlang性能测试的好工具. timer:tc(?MODULE, Fun, [Args]).
- session_start保存的客户端cookie的值什么时候改变
//cookie记录的session_id立刻改变了session_start();echo "old:".session_id();session_regenerate_id() ...