您的位置:首页 > 编程语言 > PHP开发

include("include_path")函数包含路径详讲__PHP_include()

2015-04-16 19:40 357 查看
问题:

在项目开发中,经常需要涉及到 include()函数,其中经常会涉及到嵌套使用include的情况.如何确认include的确切包含路径?下面是针对这个问题的展开.

现在研究根目录的规律问题.

scene:MAC OSX/APACHE/PHP

涉及函数:include

基本:

当前路径: ./

上一级路径: ../

>>>实验一:

寻找include(控制结构)的include_path原理.

A:运行目录与物理目录?

Q:如下实验一,针对b.php来说,

运行目录是/htdoc/

逻辑目录是/htdoc/one/

因为此实验是是运行a.php文件


假设1:include_path=运行目录

假设2:include_path=物理位置目录

假设3:include-path有优先级,先寻找运行目录,再寻找物理目录,[找到马上返回,只返回一个文件].

假设4:include-path有优先级,先寻找物理目录,再寻找运行目录,[找到马上返回,只返回一个文件].

/htdoc/a.php

<?php
header("Content-type:text/html;charset=utf-8;");
include './one/b.php';
?>

>>>

/htdoc/one/b.php

<pre name="code" class="php"><?php
echo '<br />包含./one/b.php成功<br />';
include './one/html.php';
?>



>>>

/htdoc/one/html.php

<?php
echo '<br />包含/htdoc/one/html.php成功<br />';
echo '假设1:include=逻辑运行目录 成立';
?>


>>>

/htdoc/one/one/html.php

<?php
echo '<br />包含/htdoc/one/one/html.php成功<br />';
echo '假设2:include_path=物理位置目录 成立';
?>


>>>实验一结果(运行a.php):

输出

包含./one/b.php成功
包含/htdoc/one/html.php成功
假设1:include=逻辑运行目录 成立


>>>实验二

保留实验一中的

/htdoc/a.php

/htdoc/one/html.php



/htdoc/one/one/html.php

修改:/htdoc/one/b.php



/htdoc/one/b.php

<pre name="code" class="php"><?php
echo '<br />包含one/b.php成功<br />';
include 'one/html.php';
?>

>>>实验二结果(运行a.php):

输出

包含./one/b.php成功
包含/htdoc/one/html.php成功
假设1:include=逻辑运行目录 成立
结论:与实验一输出结果一致.
>>>实验三

[b]保留实验二中的

[/b]

/htdoc/a.php

/htdoc/one/b.php



/htdoc/one/one/html.php

删除:/htdoc/one/html.php

>>>实验二结果(运行a.php):

输出

包含./one/b.php成功
包含/htdoc/one/one/html.php成功
假设2:include_path=物理位置目录 成立

结论:出乎意料,假设2成立.

>>>综合结论:

include被嵌套多层时,include的参数[也就是路径也就是include_path]是有差异的.

A:差异在哪里?

Q:[比较难描述...]举例说明.include_path的值是关键,这个值必定是一个路径.

当最前面为 ./,表示相对当前运行路径来包含文件. //如 include "./one/html.php"; 此时会寻找 /htdoc/one/html.php.

当最前面直接接文件名,include则会查找两个路径(运行路径和物理路径),优先返回运行路径. //如 include "one/html.php"; 此时会寻找/htdoc/one/html.php 和 /htdoc/one/one/html.php. 并且,如果/htdoc/one/html.php存在,则直接返回/htdoc/one/html.php

可以参考PHP手册:

include()

寻找包含文件的顺序先是在当前工作目录的相对的 include_path 下寻找,然后是当前运行脚本所在目录相对的 include_path 下寻找。
例如 include_path 是 .,当前工作目录是 /www/,脚本中要 include 一个 include/a.php 并且在该文件中有一句 include "b.php",
则寻找 b.php 的顺序先是 /www/,然后是 /www/include/。如果文件名以 ./ 或者 ../ 开始,则只在当前工作目录相对的 include_path 下寻找。


好难表达(描述)include的性质.不管你弄没弄明白,反正我是明白了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐