文件加载

综述:

有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. Hadoop集群(第9期)_MapReduce初级案例

    1.数据去重  "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重.下面就 ...

  2. Android:将View的内容映射成Bitmap转图片导出

    前段时间在网上看到这么个例子是将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下: 在Android中自有 ...

  3. UI开发中的Unit test新工具:网页抓屏比较

    在UI开发中,判断是否正常往往需要看到UI长的模样,所以一般的Unit test无法胜任. 现在有一款通过抓屏而后相素比较的方法,或许对于UI自动化测试能够起到比较好的改进效果. 具体请参见:http ...

  4. 【笨嘴拙舌WINDOWS】GDI(2)

    古时候,大师舞文之时需要笔墨纸伺候,不同笔,不同墨,作品风格迥异! 以下是windows提供的笔(带有墨): CreatePen(PS_SOLID,0,clRed);                  ...

  5. js之json

    关于json不了解的,请点击:http://www.json.org/json-zh.html json对象的属性必须要用双引号,值为字符串类型也只能使用双引号,例:{"name" ...

  6. 转载:NPOI导出到Excel表格

    NPOI开发包下载:http://pan.baidu.com/share/link?shareid=4025220936&uk=2837994235 需要命名空间 using NPOI.HSS ...

  7. ubuntu下Rhythmbox播放器乱码问题解决方案

    (注:本文部分内容转自互联网)<a href="http://riden001.com/wp-content/uploads/2014/11/45.jpg"><i ...

  8. OpenVz一键安装openvpn

    # !/bin/sh # OPENVPN SERVER CONFIGURATION echo "####################################" echo ...

  9. 一天一点MySQL复习——获取数据库系统时间、变量赋值、变量比较

    一.SQL获取系统时间 mysql> select now() from dual; +---------------------+ | now() | +------------------- ...

  10. Android中的事件分发和处理

    上次跟大家分享了一下自定义View的一下要点,这次跟大家聊一下View的事件分发及处理,为什么主题都是View,因为作为一名初级应用层Android工程师,跟我打交道最多的莫过于各种各样的View,只 ...