zoukankan      html  css  js  c++  java
  • PHP 文件包含总结 include require 命名空间 autoload spl_autoload_register 读取文件路径

    总结:

    1. include或require包含其他文件 使用./或者 ../,这里的当前路径和上一层路径,取决于运行脚本的路径,会存在如下问题。

    在写PHP程序时,经常要用到include或require包含其他文件,但是各文件里包含的文件多了之后,就会产生路径问题。

    如下目录:

    <web>(网站根目录) 
     ├<A>文件夹 
     │ │ 
     │ └1.php 
     ├<B>文件夹 
     │ │ 
     │ └2.php 
     └index.php

    现在根目录下的index.php要包含A文件夹内的1.php文件,则用include "./A/1.php"即可

    而1文件夹内的1.php又包含了B文件夹内的2.php,则1.php内写上include "../B/2.PHP"即可

    可是要知道,当index.php包含了1.php之后,编译是在index.php里进行的,也就是index.php所包含文件里的include都是相对于index.php的,那么1.php被包含进index.php里了,那么就要相对于index.php寻找2.php了。而上面说了,1.php里写的是include "../B/2.php",现在编译文件已经相对于网站根目录了(即相对于index.php),"../"则意味着还要再返回上一级目录寻找,那么怎么会找得到。

    在网上也寻找过一些方法,最好的办法还是都采用绝对路径方法较妥。可以定义一个单入口文件,将要包含的文件包含进来,定义一个常量define("__ROOT__",dirname(__FILE__));,那么在写后面的文件过程中,只需要采用绝对方式,加上__ROOT__就行了。

    2. include或require包含其他文件 不使用./或者 ../ 直接包含文件名,取决于包含文件所在路径,如:

    <web>(网站根目录) 
     ├<A>文件夹 
     │ │ 
     │ └1.php 

     │ │ 
     │ └a.php

     ├<B>文件夹 
     │ │ 
     │ └2.php 
     └index.php

    当index.php包含了1.php之后,编译是在index.php里进行的,也就是index.php所包含文件里的include都是相对于index.php的,那么1.php被包含进index.php里了,如果1.php包含a.php使用 require"a.php" ,不存在问题。使用 require"./a.php" ,存在问题,此时的./表示的是index.php所在的路径。

    3.命名空间的函数加载  原理也是包含文件,不过只有使用到的时候被加载,使用spl_autoload_register可以注册命名空间的加载机制。

    4.文件的路径和include和require 有区别,文件的./filename.ext或../filename.ext或filename.ext都是以所运行脚本所在目录为参考的(即getcwd()得到的目录),所以文件操作建议用相对路径 __FILE__。

    $filename = 'file1.txt';
    $fp = @fopen($filename,'w');

    fwrite($fp," ");

    fclose($fp);

    $filename = '../file2.txt';

  • 相关阅读:
    javascript:getElementsByName td name
    C# 批量复制文件
    笨笨图片批量下载器[C# | WinForm | 正则表达式 | HttpWebRequest]
    浩方魔兽"去"小喇叭终极解决方案[Warcraft III]
    JavaScript——DataListBox(组合框)
    PowerDesigner 12 根据名称生成注释(完整示例)
    笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]
    使用IHttpHandler做权限控制[ASP.NET | IHttpHandler | AjaxPro | UserHostName]
    AjaxPro 未定义错误
    北京有趣地名(二)
  • 原文地址:https://www.cnblogs.com/swing07/p/5561287.html
Copyright © 2011-2022 走看看