我正在使用全局常量,如下所示:
/project
/application
bootstrap.php
/public
index.php
的index.php
bootstrap.php中
另外我想问一下有没有更好的方法呢?
答案 0 :(得分:1)
你的意思是你的申请不公开?无论如何,通常我只是在我的前端控制器中定义ROOT
常量(通常为index.php
),如下所示:
define('ROOT', str_replace('\\', '/', __DIR__));
或者在__DIR__
不可用的旧版PHP上:
define('ROOT', str_replace('\\', '/', dirname(__FILE__)));
由于内部结构永远不会改变,我只需要执行以下操作:
include(ROOT . '/application/libraries/Email.php');
而不是:
define('LIBRARY_PATH', ROOT . '/application/libraries');
include(LIBRARY_PATH . '/Email.php');
减少污染。 =)
答案 1 :(得分:1)
根据您的目录树:
这是我用来加载PHP脚本的那个,基本上你可以把它放在index.php或者bootstrap.php中
define("PROJECT_DISK_PATH", str_replace('\\', '/', dirname(dirname(__FILE__))) . '/');
/*
Server variables $_SERVER['PHP_SELF'] and $_SERVER['SCRIPT_FILE_NAME'] are both USELESS to
accomplish this task because they both return the currently executed script and not this included file path.
*/
然后在PHP脚本中执行:
include(PROJECT_DISK_PATH . 'path/to/your/script/somescript.php')
这些是我用来加载JS / CSS脚本IN PAGES:
define("PROJECT_DOCROOT_PATH", '/' . substr(PROJECT_DISK_PATH, strlen($_SERVER['DOCUMENT_ROOT'] . '/')));
define("PROJECT_HTTP_PATH", "http://" . $_SERVER['HTTP_HOST'] . JPL_DOCROOT_PATH);
所以在你的页面中你可以这样做:
<script type="text/javascript" src="<?php echo PROJECT_DOCROOT_PATH; ?>path/to/your/script/somescript.js"></script>
答案 2 :(得分:-1)
我尽可能使用$_SERVER['DOCUMENT_ROOT']
来寻找绝对路径
如果不可能,我会使用相对路径,就像Alix一样。