我是PHP的新手。我正在开发一个新的PHP网站。我的网站文件夹结构如下,
-SystemRoot
+Code
+Data_Access
-Public_HTML
+css
+js
+Templates
-resources
config.php
我在资源目录中有一个配置文件,我需要在各种目录中的大多数其他php页面中包含config.php
。因此,我必须在不同的页面中指定配置文件的路径,例如
include_once '../resources/config.php';
include_once '../../resources/config.php';
有没有办法克服这个&使用可以在项目中的eny文件夹路径中使用的config.php
的公共(相对)路径?
在php项目中包含类的常见/最佳实践是什么?
答案 0 :(得分:4)
我已经完成了你过去所做的一切,除了我的require()
以不同的方式完成:
require_once(str_replace('//','/',dirname(__FILE__).'/') .'../../config.php');
然后我定义了其他可以在整个过程中使用的路径:
// DIRECTORY_SEPARATOR is a PHP pre-defined constant
// (\ for Windows, / for Unix)
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
// Define Views URL path
defined('VIEW_URL') ? null : define('VIEW_URL', '/application/views');
// Define CSS URL path
defined('CSS_URL') ? null : define('CSS_URL', '/public/css');
// Define JavaScripts URL path
defined('JS_URL') ? null : define('JS_URL', '/public/js');
// Define site root
defined('SITE_ROOT') ? null :
define('SITE_ROOT', str_replace('//','/',dirname(__FILE__)));
// Define App path as 'application' directory
defined('APP_PATH') ? null : define('APP_PATH', SITE_ROOT.DS.'application');
// Define Includes path as 'application/includes' directory
defined('INC_PATH') ? null : define('INC_PATH', APP_PATH.DS.'includes');
// Define Helpers path as 'application/helpers' directory
defined('HELP_PATH') ? null : define('HELP_PATH', APP_PATH.DS.'helpers');
// Define Controllers path as 'includes/classes' directory
defined('CTLR_PATH') ? null : define('CTLR_PATH', APP_PATH.DS.'controllers');
// Define Models path as 'includes/classes' directory
defined('MOD_PATH') ? null : define('MOD_PATH', APP_PATH.DS.'models');
// Define Views path as 'includes/classes' directory
defined('VIEW_PATH') ? null : define('VIEW_PATH', APP_PATH.DS.'views');
答案 1 :(得分:3)
使用chdir($_SERVER['DOCUMENT_ROOT']);
启动您的脚本。在那里,您的所有include
和任何其他文件功能(例如file_exists
,fopen
等)都可以在您网站的根目录中运行(通常为public_html
)。< / p>
答案 2 :(得分:2)
您可以将所有内容路由到index.php
然后定义一些常量。路由到index.php的Evrything将可以访问这些。
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
define('RESOURCES', SELF . 'resources/');
答案 3 :(得分:0)
如果使用php 5.x,请查看http://php.net/manual/en/language.oop5.autoload.php