2012-05-16 3 views
0

Файл index.php содержит много файлов и в некоторых из них, включая файлы, есть некоторые переменные, принадлежащие файлу, который содержит index.php.Can I Я пишу только «включить коды» в файл index.php или вставлять «включить коды» во все отдельные файлы, которые index.php файл прилагается? Это может быть трудно понять, что я написал, может быть, но вот мои папки и коды:Как обрабатывать «отдельные в том числе» из разных файлов в 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_ROOT и DS константы. Так что на сайте нет изображения. Я знаю, потому что initialize.php не включен. Нет в том числе в function.php, но DS и SITE_ROOT работ. В то время как initialize.php включен в index.php, почему файлы под включают в себя не видят эти SITE_ROOT и DS. Если я вставляю <?php require_once "includes/initialize.php";?> в файлы в папке include, будет много initialize.php в index.php.

Использование одного <?php require_once "includes/initialize.php";?> только в одном файле. Как я могу решить эту проблему? Или как лучше дизайн.

ответ

0

functions.php работает, потому что он включен в initialize.php, который содержит необходимые определения.

content.php необходимо включить initialize.php. Хотя index.php включает его, но content.php является другим файлом и не является частью вызывающей цепочки и вызывается независимо от index.php и, следовательно, требует включения initialize.php.

Вам необходимо включить initialize.php во все ваши файлы программ в качестве общего файла включения.

Другой выход - включить content.php в index.php, а затем content.php сможет автоматически получать доступ к определениям в initialize.php.