文件加载

综述:

有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. Restrict each user to a single session in window server 2008 R2 or 2012

    Restrict each user to a single session in window server 2008 R2 or 2012 2014-10-31 In window server ...

  2. UC编程之线程

    线程--隶属于进程,是进程中的程序流.操作系统支持多进程,每个进程内部支持多线程.多线程并行(同时执行)代码. 进程--重量级的,每个进程都需要独立的内存空间. 线程--轻量级的,线程不拥有独立的内存 ...

  3. Android开源库--Universal Image Loader通用图片加载器

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上.   github地址:https://github.com/nostra13/Android-Universal-Image-Loader 介绍 ...

  4. iOS富文本(三)深入使用Text Kit

    在上一篇中介绍了Text Kit的三种基本组件的关系并且简单的实现了怎么使用这三种基本组件,本片将深入的去使用这三种基本组件. NSTextStorage NSTextStorage是NSMutabl ...

  5. 设置app的状态栏样式

    http://www.jianshu.com/p/9f7f3fa624e7 http://cocoa.venj.me/blog/view-controller-based-status-bar-sty ...

  6. Asp.Net验证码2

    using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...

  7. [Linux] Git: 基本使用

    Git 属于分布式版本控制系统( Distributed Version Control System,简称 DVCS )客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来.这么一 ...

  8. 堆Heap

    #pragma once#include <vector> // 小堆template<class T>  //仿函数struct Less{       bool opera ...

  9. 08day1

    高中运动会 最大公约数 [问题描述] 梦幻城市每年为全市高中生兴办一次运动会.为促使各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同.为增加 ...

  10. 扩容盘、SD卡扩容

    内存卡的前世今生回想当年,大家都还在用着非智能机,由于功能单一,需要存储的数据也就是通讯录和短信.虽然那时也有手机游戏,但大多都是几十KB,并不需要太大的存储空间.但随着手机功能的多样化,尤其是音乐. ...