文件加载

综述:

有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)的更多相关文章

  1. php基础语法(文件加载和错误)

    文件加载 有4个文件加载的语法形式(注意,不是函数): include,  include_once,  require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载 ...

  2. 13)PHP,文件加载(include和require)

    有四种文件加载的语法形式(注意,不是函数): include,  include_once,  require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载入一个外部 ...

  3. Java基础之Throwable,文件加载

    Java中的异常与错误都继承自Throwable,Exception又分为运行时异常(RuntimeException)和编译时异常. 运行时异常是程序的逻辑不够严谨或者特定条件下程序出现了错误,例如 ...

  4. php文件加载、错误处理、方法函数和数组

    数组运算符注意:php中,数组的元素的顺序,不是由下标(键名)决定的,而是完全由加入的顺序来决定.联合(+):将右边的数组项合并到左边数组的后面,得到一个新数组.如有重复键,则结果以左边的为准$v1 ...

  5. JVM系列【3】Class文件加载过程

    JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 Class文件加载过程 JVM加载Class文件主要分3个过程:Loadi ...

  6. 文件加载---理解一个project的第一步

    当我最开始写php的时候,总是担心这个问题:我在这儿new的一个class能加载到对应的类文件吗?毕竟一运行就报Fatal Error,什么**文件没找到,类无法实例化等等是一种很“低级”的错误,怕别 ...

  7. Android 的 so 文件加载机制

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 最近碰到一些 so 文件问题,顺便将相关知识点梳理一下. 提问 本文的结论是跟着 System.loadlibrary() 一层层源 ...

  8. ELF文件加载与动态链接(一)

    关于ELF文件的详细介绍,推荐阅读: ELF文件格式分析 —— 滕启明.ELF文件由ELF头部.程序头部表.节区头部表以及节区4部分组成. 通过objdump工具和readelf工具,可以观察ELF文 ...

  9. WPF 从文件加载字体

    本文告诉大家从文件加载字体.在wpf 使用 fontfamily 显示指定的 ttf 显示字体 假如有字体在 C:\Projects\MyProj\free3of9.ttf ,可以使用 Private ...

随机推荐

  1. cdoj 1329 卿学姐与魔法 优先队列

    卿学姐与魔法 Time Limit: 1200/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  2. 上海二手房8月排名:链家、悟空找房、中原、太平洋、我爱我家、易居、房天下、iwjw、房多多、房好多、q房网、、、

    房产网站总结 链家: 悟空找房: 中原: 太平洋: 我爱我家: 易居: 房天下: iwjw:有较多二手房信息 链家称王 房多多领跑电商平台 近日,云房数据公布了8月上海房产中介成交数据,从排行榜来看, ...

  3. java生成带html样式的word文件

    参考:http://blog.csdn.net/xiexl/article/details/6652230 最近在项目中需要将通过富文本编辑器处理过的文字转换为Word,查了很久,大家通常的解决办法是 ...

  4. UTC的相互转换(java)

      SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(& ...

  5. Qt环境搭建(Qt Creator)

    简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World.下面主要讲解如何利 ...

  6. java前端选择

    在做web开发的时候难免遇到一个问题,那就是,选择什么样的框架.下面把前端的框架简单的列一下. 1.flex Apache基金会今天发布了Flex 4.8版本,这是Adobe将Flex捐献给Apach ...

  7. 安装CouchbaseClient的过程中提示 Error 1935.An error occurred during the installation of assembly;Error:-1603 fatal error during installation

    安装过程中提示报错   点击确定后 安装程序会接着回滚,又提示报错如下       Error 1935的解决方法是下载一个微软的补丁. http://support.microsoft.com/de ...

  8. (转)UILabel的详细使用

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 75, 40)];   //初始化UIlbel并设定frame lab ...

  9. mysql日期函数(转)

    MySQL 获得当前日期时间 函数 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | n ...

  10. vijos 1379 字符串的展开

    23333333333333333 #include<iostream> #include<cstdio> #include<cstring> #include&l ...