我正在开发一个PHP网站,在Mac OS中使用Eclipse。
我想知道处理包含句子的正确方法是什么。
我有一个php文件,这是我的主要' lib'脚本。此文件通过include命令访问其他文件。问题是如何引用这个子文件,因为include中的相对路径是基于入口点脚本,而不是当前脚本。
所以假设我有一个mainlib.php文件,它访问一个sublib.php文件。它会是这样的:
Project Root: [libs] mainlib.php sublib.php [subdir] entryPointB.php entrypointA.php
我想把include" sublib.php" mainlib.php中的句子,所以我只能包含mainlib.php,而不是每次需要时都包括它们。 (在此示例中只有两个文件,但在我的实际项目中会有更多文件。
让我说我的mainlib.php文件包含这个:
<?php include "libs/sublib.php; ?>
从EntryPointA.php调用mainlib.php时它会起作用,但如果从EntryPointB调用则会失败。
如果mainlib.php包含:
<?php include "../libs/sublib.php; ?>
它适用于EntryPointB.php,但在entrypointA.php中失败。
我该如何解决这个问题?
我尝试或想过的一些可能性:
__DIR__
变量获取目录 - 不起作用,因为它返回入口点文件,而不是项目根目录。答案 0 :(得分:0)
我解决了这个问题。不知道这是不是最好的方式,但它解决了我。如果有人遇到同样的问题,我会把它留在这里。
我创建了一个名为config.php的文件,其中包含以下内容:
<?php define("ROOT_PATH", "/Path/to/My/Project/"); ?>
然后,我的mainLib.php我可以有这句话:
include "config.php";
它将在入口点脚本所在的任何位置工作,因为它始终指向当前文件的相同目录,而不是入口点。然后我只需要将ROOT_PATH添加到其他包含:
inclue ROOT_PATH."/subdir/file.php";