index.php
文件有很多包含文件,其中一些包括文件,有些变量属于index.php
包含的文件。可以只写“包含代码”到{{1文件或插入“包含代码”所有index.php
文件包含的单独文件?可能很难理解我写的内容,但这里是我的文件夹和代码:
我的文件夹和文件在这里:
index.php
我的initialize.php就在这里:
/
|
+ includes/
| |
| + initialize.php
| + functions.php
| + config.php
|
+ layouts/
| |
| + header.php
| + sidebar.php
| + content.php
| + footer.php
|
+ images/
| |
| + image1.jpg
|
+ index.php
这是function.php
//initialize.php
<?php
defined('DS') ? null : define('DS', '/');
defined('SITE_ROOT') ? null :
define('SITE_ROOT', '/webspace/httpdocs');
defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');
require_once(LIB_PATH.DS.'config.php');
require_once(LIB_PATH.DS.'functions.php');
?>
以下是content.php的一部分
//function.php
<?php
function include_layout_template($template="") {
include(SITE_ROOT.DS.'layouts'.DS.$template);
}
function __autoload($class_name) {
$class_name = strtolower($class_name);
$path = LIB_PATH.DS."{$class_name}.php";
if(file_exists($path)) {
require_once($path);
} else {
die("The file {$class_name}.php could not be found.");
}
}
?>
这是index.php:
//content.php
<img src="<?php echo SITE_ROOT.DS.'images'.DS.'image1.jpg' ?>" />
所以,我的问题是,content.php中的代码:
//index.php
<?php require_once "includes/initialize.php";?>
<?php include_layout_template("index_header.php"); ?>
<?php include_layout_template("sidebar.php"); ?>
<?php include_layout_template("index_content.php"); ?>
<?php include_layout_template("footer.php"); ?>
不起作用。因为该文件无法识别<img src="<?php echo SITE_ROOT.DS.'images'.DS.'image1.jpg' ?>" />
和SITE_ROOT
常量。因此,站点中没有图像。我知道因为不包括initialize.php。 function.php 中不包括但DS
和DS
有效。虽然 initialize.php 包含在index.php中,但为什么包含下的文件却看不到这些SITE_ROOT
和SITE_ROOT
。如果我将DS
插入包含文件夹中的文件,则 index.php 中会有很多initialize.php。
只在一个文件中使用一个<?php require_once "includes/initialize.php";?>
,我该如何解决这个问题?或者如何更好的设计。
答案 0 :(得分:0)
我强烈建议您在PHP中查看OOP和autoloading。
答案 1 :(得分:0)
functions.php之所以有效,是因为它包含在initialize.php中,其中包含所需的定义。
content.php需要包含initialize.php。尽管index.php包含了它,但是content.php是一个不同的文件,并且不是调用链的一部分,而是独立于index.php调用,因此需要包含initialize.php。
您需要在所有程序文件中包含initialize.php作为公共包含文件。
另一种方法是在index.php中包含content.php,然后content.php将能够自动访问initialize.php中的定义。