PHP中多个文件包含的问题 (一)

  使用require或者include来包含文件时,包含的文件的内容相对性,这个很容易搞混,所以记录一下。

  这个相对性包括

    __DIR__,__FILE__,$_SERVER['PHP_SELF'],$_SERVER['SCRIPT_NAME']

  比如看下面的例子:

  • test/
    • dir1
      • a.php
    • dir2
      • b.php
    • index.php

  文件层级结构如上:

  

  访问dir2/b.php,输入内容如下:

aaaaaa
dir: /Library/WebServer/Documents/test/dir1
file: /Library/WebServer/Documents/test/dir1/a.php
php_self: /test/dir2/b.php
script_name: /test/dir2/b.php
aaaaaaa

bbbbbbb
dir: /Library/WebServer/Documents/test/dir2
file: /Library/WebServer/Documents/test/dir2/b.php
php_self: /test/dir2/b.php
script_name: /test/dir2/b.php
bbbbbbb

  从上面的例子中可以得出下面的结论:

  1、无论A文件是否被包含进其他文件中,在该A文件中的__DIR__始终是该A文件真实的所在目录名,只要文件的位置不变,__DIR__值就不会改变,不会变成包含他的那个文件,即使执行的是包含他的那个文件。

  2、无论A文件是否被包含进其他文件中,在该A文件中的__FILE__始终是该A文件真实的所在文件名,只要文件名不变,__FILE__值就不会改变,不会变成包含他的那个文件,即使执行的是包含他的那个文件。

  3、$SERVER全局数组中的PHP_SELF和SCRIPT_NAME的值始终是直接运行的那个文件名,即你访问的哪个文件,这两个变量的值就是那个文件名,不会是包含的某个文件名。

  

  

原文地址:https://www.cnblogs.com/-beyond/p/8623016.html