zoukankan      html  css  js  c++  java
  • PHP文件载入和载入路径

    一.文件载入

    所谓的文件的载入,就是指将需要的目标文件的代码载入到当前的位置上,从某种意义上来说,文件载入也是一种流程控制!

    文件载入的主要目的是体现网站的分层设计,因为不同的页面有很多相同的区域(相同的代码)这些相同的代码区域只需要书写一次,在需要的时候将该文件载入进来即可!以代码的重用!

     PHP提供了四种文件载入的语句:

        include,include_once,require,require_once

        它们主要的功能都是实现文件的载入,只是有些语法上的差别!

    include

    基本的语法形式:

    include ‘目标文件地址’;

    执行的结果:

    几点注意:

    1,  载入的文件无论是什么类型,我们需要的只是目标文件内的代码,而与文件的后缀名无关!

     

    2,  载入的目标文件内,无论是html代码还是php代码,都可以正常的执行!

     

    载入过程(原理)

    载入的过程发生在代码的运行阶段,而不是代码的预编译阶段

    1,  执行到include的时候,先退出PHP模式,进入到了HTML模式

    2,载入目标文件的源代码,相当于将目标文件里面的所有的内容复制到目标位置

    3,将载入的代码从源代码开始预编译并执行!

    4,再次进入到PHP模式!

    二.载入的路径问题

    可以分成:相对路径,默认路径和绝对路径!

    相对路径

    相对于当前脚本文件所在的位置的路径!典型的相对路径有:

     

    ./      :当前执行脚本所在的当前目录

    ../     :当前执行脚本所在的上级目录

     

    (补充:其实任何目录下都有两个隐藏的目录,一个就是.一个就是..)

    /        :在真实的项目中一般代表网站的根目录

    默认路径

     

    注意:

    默认路径是可以配置的,而不仅仅代表当前路径!

    在早期的项目中,有一个比较简单的做法,把所有可能被载入的文件全部放到一个统一的目录下,然后将该目录配置成默认路径,而在进行文件载入的时候使用默认路径即可!

    然后在php.ini中配置默认路径:

    直接修改配置文件,对所有的项目都生效了,所以还有一个函数可以使用:set_include_path作用就是设置当前脚本的默认的路径!

     

    set_include_path(‘当前脚本的默认路径’);

     

    绝对路径

    当出现多重载入的时候,根据相对路径很容易发生混淆或者错误,所以,在真实的项目中,一般都采用绝对路径进行载入!

     

    因为在载入一个文件的时候,该文件的绝对位置是不可能发生改变的,而相对路径是取决于当前的代码在哪个文件内执行,会发生改变!

    于是,又遇到了另外一个问题,当我们进行项目移植的时候,绝对路径的地址很有可能会发生改变,所以,在真实的项目中,应该先定义目录常量!

    不同的载入语句的区别

    require与include

    同样适用于require_once和include_once

     

    都是在进行文件的载入,只是对目标文件的依赖程度不一样,所产生的错误级别也不一样:

    错误的级别:

    error:致命错误,比如出现语法错误

    warning:警告错误

    Notice:错误级别最低

     

    require:必须载入,如果目标文件不存在,则报告一个error级别的错误,后续代码就停止运行!

    include:载入,如果目标文件不存在,则报告一个warning级别的错误,但是后续代码继续执行!

     

    include与include_once

    同样适用于require与require_once

    这里的once是一次的意思!

    就是在载入之前先进行一次判断,判断当前载入的文件前面是否已经载入过,如果已经载入过,就不再载入了,如果没有载入过,则继续载入!从而保证某个文件在一个文档中不会重复载入!

     

    有时候,只载入一次的判断是非常有必要的,比如,函数不能重复定义!

  • 相关阅读:
    poj 3126 Prime Path
    poj 2255 Tree Recovery
    spoj 7259 LITE
    poj 1742 Coins
    poj 1915 Knight Moves
    poj 2352 Stars
    【祝贺】gooogleman嵌入式开发板联盟图标设计完成,Let me Show!
    【讨论】TE6410/OK6410 开发板dnw c0008000是什么意思, ?
    【讨论】为什么我的300W摄像头偶尔会拍照不成功?
    【探讨】关于2440 触摸屏驱动的怪异现象分析
  • 原文地址:https://www.cnblogs.com/mrszhou/p/7440216.html
Copyright © 2011-2022 走看看