0

我正在尝试找到将文件集成到项目中整个目录层次结构中的其他文件的理想方法。

我注意到以下在 Eclipse PDT 中有效:

  1. require_once '/../../services/impl/UserService.php';
  2. require_once ('ui/controller/AbstractController.php');
  3. require_once $_SERVER['DOCUMENT_ROOT'] . '/myproject/daos/impl/UserDAO.php';
  4. require_once dirname(__FILE__) . '/../AsbtractDAO.php';

所有这些都解决了,但它们的制定方式完全不同。任何想法为什么?

特别是括号 (2) 中的路径会解析,但当相同的路径在单引号之间时不会解析。

另外,每个的优点/缺点是什么?我可以采用哪种标准最可靠?

4

1 回答 1

2

对于前两个,我猜您是在询问是否使用括号。为此,请看一下这个答案: 我什么时候应该在 require/include 语句中使用括号? 本质上您可以使用其中任何一种,但为了便于阅读,最好保持一致,无论您选择哪种。第一种风格似乎更常见。

使用绝对路径可以提高性能,因为使用相对路径将指示 PHP 浏览 include_path 中的所有内容。Require 可以接受相对的或绝对的,就像任何其他语言的 include 调用一样。

第三个将传递一个绝对路径给require。但是,存在一些潜在问题$SERVER['DOCUMENT_ROOT'](例如,它在某些 IIS 服务器上不起作用)。

在第四个中,您使用的文件的绝对路径来自dirname(__FILE__)-- 也在__DIR__PHP >= 5.3 中。您也可以通过在路径中定义一个常量来做到这一点。如果您要进行代码高尔夫,这将是最多的击键,但它可能会提高性能,具体取决于导入相对位置时需要在 include_path 中扫描多少文件。

概括:

  1. 优点:最容易阅读。缺点:由于使用相对路径可能会更慢
  2. 与 1 相同 - 仅风格差异。
  3. 优点:由于使用绝对路径,可能会更快。缺点 - 不适用于某些 Web 服务器
  4. 优点:由于使用绝对路径,可能会更快。缺点 - 更啰嗦
于 2013-08-23T03:32:57.773 回答