这个PHP代码是什么意思?

时间:2011-03-30 20:31:32

标签: php

require dirname(__FILE__).'/yahooPHP/lib/Yahoo.inc';

此行位于一个目录中的一个文件中,我无法确定如何引用另一个目录中的文件。

这个表达是什么意思,它暗示引用必须只在同一个目录中?

3 个答案:

答案 0 :(得分:5)

__FILE__ Magic Constant,对应于写入文件的完整路径。

这意味着 dirname(__FILE__) 指向当前文件(写入此文件的那个)所在的目录。


因此,dirname(__FILE__).'/yahooPHP/lib/Yahoo.inc'指向:

  • 此行所在的目录
  • 然后,该目录的yahooPHP子目录
  • lib
  • yahooPHP子目录
  • Yahoo.inc文件到lib目录。

基本上,你有:

your-file.php
yahooPHP/
    lib/
        Yahoo.inc

答案 1 :(得分:1)

http://php.net/manual/en/function.dirname.php

  

分层的关键问题包括   树是PHP进程包含的   相对于原始文件的路径,   不是当前的包含文件。

     

对此的解决方案是为所有人添加前缀   包括路径:
  < PHP   str_replace函数( '//', '/',目录名(文件));   ?>

     

这将生成一个基本路径   相对于当前文件,其中   然后将允许包含行为   类似于C / C ++。

     

因此,要包含一个1英寸的文件   父目录:
  < PHP   require_once(   str_replace函数( '//', '/',目录名(文件)。 '/')   '.. / parent.php'); ?>

     

包含相同的文件   目录:
  <?php require_once(   str_replace函数( '//', '/',目录名(文件)。 '/')   .'neighbor.php'); ?>

     

包含一个文件   子目录:
  <?php require_once(   str_replace函数( '//', '/',目录名(文件)。 '/')   .'folder / sub.php'); ?>

     

请注意我们引用的所有路径   不能以/开头,必须是   相对于当前文件,按顺序   连接正确。

答案 2 :(得分:0)

查看specification后。 这实际上是将指定资源包含到PHP脚本中以及检索父文件夹路径和字符串连接的示例。其工作原理如下:

require = add file to your PHP script (similar to `include`)
dirname() = get the parent directory of specified path
__FILE__ = this will be resolved to absolute path of the current file
.'/yahooPHP/lib/Yahoo.inc' = string concatenation, so this part simply adds file's path to the rest of the string

所以最后你最终会添加一个指向Yahoo.inc文件路径的文件(应该在相对于父目录的目录中找到)。