且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

include、ruquire使用相对路径总结

更新时间:2022-04-18 20:46:08

a文件包含b文件,b文件以相对路径包含c文件。那么。b中相对路径是相对哪个文件而言呢?

在其他程序语言中。处理方式是:b文件的中的相对路径是相对b文件而言的。这样的好处是可以开发出与路径无关的程序包。



而在php中。则是相对于当前工作目录而言的。所以,b文件的中的相对路径是相对a文件而言的。


在thinkphp中的使用:

在入口文件index.php中必须要定义常量。比如代码是:define('THINK_PATH', 'http://www.cnblogs.com/ThinkPHP');

为什么呢?比如,整个框架是在一个文件夹thinkphp中。index.php中载入ThinkPHP.php文件后。ThinkPHP.php这个框架入口文件里面会载入框架中其他所需的库。由于ThinkPHP.php使用的是相对路径载入其他文件,按照php的处理机制。那么这个相对就是相对于index.php的。而不是相对于ThinkPHP.php文件(如果是相对它的话。那么就不是必须定义THINK_PATH常量了)。所以,需要载入框架其他文件。直接使用类似下面的方式:require THINK_PATH."/Common/runtime.php";



设计方式学习:


在php中。相对路径是相对于当前工作目录的文件的。哪个是最终要执行的文件。a需要b,b需要c。那么a才是主文件。就可以理解成当前工作目录的文件。

所以,开发通用的包的话。可以考虑使用者定义一个常量。那么整个程序包里面的文件都用到这个常量作为路径载入其他文件。