PHP路径的最佳实践

时间:2012-05-03 04:06:38

标签: php path twig relative absolute

我一直在互联网上试图找出处理我网站路径的最佳方法。我应该使用相对路径,绝对路径吗?

我已多次提到dirname( FILE )。我对相对路径的一个问题是,不同目录级别的几个其他文件包含的php文件会导致相对路径中断。例如,如果目录结构是

Root
    A
    B
       b

b和A中的php文件包含B中的另一个文件,然后B中文件中代码的相对路径将不同。

很抱歉,如果这令人困惑,我很难打出我想说的话。

因此,一般来说,处理代码中包含和文件操作的文件路径的最佳方法是什么。

谢谢

5 个答案:

答案 0 :(得分:14)

有许多方法可以找到路径我总是觉得最容易在项目根{1}}或index.php排序的文件中定义常量。 然后我可以将config用于包含/类加载器等,并SITE_ROOT用于视图,控制器,重定向等。

SITE_URL

<强> Basic class Autoloader

<?php
$root=pathinfo($_SERVER['SCRIPT_FILENAME']);
define ('BASE_FOLDER', basename($root['dirname']));
define ('SITE_ROOT',    realpath(dirname(__FILE__)));
define ('SITE_URL',    'http://'.$_SERVER['HTTP_HOST'].'/'.BASE_FOLDER);
?>

答案 1 :(得分:0)

您可以将所有包含文件放入一个主目录中。然后在配置文件或脚本本身中创建路径变量,该变量指向包含目录。

答案 2 :(得分:0)

为目录结构,PHP文件和文件的类名使用正确的命名约定以及设计自动加载器以包含文件的最佳方法

答案 3 :(得分:0)

Zend框架有一些关于优化包含路径的好指示:

http://framework.zend.com/manual/1.10/en/performance.classloading.html

即使您没有使用Zend框架,这些也是很好的指针。一般要点是:

  • 使用绝对路径
  • 减少您定义的包含路径的数量
  • 最后定义当前目录,或者根本不定义当前目录
  • 尽早定义Zend Framework include_path(如果不使用Zend则不太相关)

答案 4 :(得分:-1)

新版本的php(PHP5.3)可以使用__autoload 因此,您只需确定应用程序的根目录。