首页 > 技术 > php相对路径和绝对路径

php相对路径和绝对路径

2013年11月17日 发表评论 阅读评论

一个好的php代码,无论放到windows还是linux,不同版本的php上,都能正确的输出结果,才是一个好代码。

说起来容易的事,做起来并不是很轻松,很多时候写代码都是功能导向,当前环境,要赶时间立马见效果,基本就是怎么方便怎么来了。

但是为了写出一个好的代码和后期减少调试时间,写每一个代码都要斟酌考虑是否能够适应你所能想到的困难,每次解决一个,日积月累下来,你的代码就会伸缩自如了。

相对路径是对于当前代码文件所在文件夹来说。
绝对路径是相对于根文件夹来说。

当代码需要依赖别的文件时,就需要统一代码的包含路径。

代码执行时出现找不到文件,多数是由于没有定义好路径。

我推荐大家写绝对路径来写程序,相对路径一旦移动后就容易出现找不到要包含的文件。

用到的php函数和常量

dirname
__FILE__
DIRECTORY_SEPARATOR

推荐写一个初始化文件 initialize.php
[php]
<?php
// Define the core paths
// Define them as absolute paths to make sure that require_once works as expected

// DIRECTORY_SEPARATOR is a PHP pre-defined constant
// ( for Windows, / for Unix)
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

defined('SITE_ROOT') ? null : define('SITE_ROOT', dirname(__FILE__));

defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');

// load config file first
require_once(LIB_PATH.DS.'config.php');

// load basic functions next so that everything after can use them
require_once(LIB_PATH.DS.'functions.php');

// load core objects
require_once(LIB_PATH.DS.'session.php');
require_once(LIB_PATH.DS.'database.php');

// load database-related classes
require_once(LIB_PATH.DS.'user.php');
[/php]

分类: 技术 标签: , ,
  1. 2013年11月18日18:59 | #1

    不用defined加三元操作符, 直接defined or define就行了
    另外, 直接写正斜杠也没问题的

    • mood
      2013年11月18日22:33 | #2

      是很巧妙,我在stackoverflow上看过这个说法,二者差别大吗?

  2. 2013年11月18日17:21 | #3

    我推荐大家写绝对路径来写程序,相对路径一旦移动后就容易出现找不到要包含的文件。 ... 在初始化文件这样的地方还是要用相对路径来定义宏才好

    • mood
      2013年11月18日23:31 | #4

      如果每个文件都包含initialize.php,确实是需要相对路径。当把initialize.php换成index.php,入口文件就一个时,使用绝对路径是不是好些。

    • 2014年4月29日09:25 | #5

      绝对路径还个优势,性能更好

  1. 本文目前尚无任何 trackbacks 和 pingbacks.