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才是主檔案。就可以了解成目前工作目錄的檔案。
是以,開發通用的包的話。可以考慮使用者定義一個常量。那麼整個程式包裡面的檔案都用到這個常量作為路徑載入其他檔案。