0

一个index.php文件有许多包含文件,在其中一些包含文件中,有一些变量属于一个index.php包含的文件。我只能将“包含代码”写入index.php文件或插入“包含代码”所有单独的文件index.php包含哪些文件?可能很难理解我写的内容,但这是我的文件夹和代码:

我的文件夹和文件在这里:

/
|
+ includes/
|   |
|   + initialize.php
|   + functions.php
|   + config.php
|
+ layouts/
|   |
|   + header.php
|   + sidebar.php
|   + content.php
|   + footer.php
|
+ images/
|   |
|   + image1.jpg
|
+ index.php

我的 initialize.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');

?>

这是function.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.");
   }
}
?>

这是 content.php 的一部分

//content.php

 <img src="<?php echo SITE_ROOT.DS.'images'.DS.'image1.jpg' ?>" />

这是 index.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"); ?>

所以,我的问题是 content.php 中的代码:

<img src="<?php echo SITE_ROOT.DS.'images'.DS.'image1.jpg' ?>" />

不起作用。因为该文件无法识别SITE_ROOTDS常量。所以,站点中没有图像。我知道,因为 initialize.php 不包括在内。function.php中没有包含,DS但是可以SITE_ROOT工作。虽然initialize.php包含在 index.php 中,但为什么 include 下的文件不到这些SITE_ROOTDS. 如果我插入到包含文件夹中的文件,那么index.php<?php require_once "includes/initialize.php";?>中会有很多 initialize.php 。

通过使用<?php require_once "includes/initialize.php";?>只有一个文件,我该如何解决这个问题?或者如何更好的设计。

4

2 回答 2

0

我强烈建议你看看PHP 中的OOP自动加载

于 2012-05-16T16:40:33.787 回答
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 中的定义。

于 2012-05-16T16:48:59.350 回答