2013-11-14 3 views
1

Я спросил об этом вчера вечером, но ответы сказали мне исследовать глобальные массивы. Проведя целый день, пытаясь решить это, я пожертвовал своей карточкой человека, и теперь я ищу помощь. У меня есть 3 файла, которые работают вместе, чтобы эхо переменная $body. Этими 3 файлами являются login.php, global.php и theme.php.Не могу обернуть голову вокруг глобальных массивов

Файл регистрации работает должным образом и отображает сообщение, которое я уже зарегистрировал, когда я заменю $ body эхом, но чтобы легко и эффективно включить мою тему, я хочу использовать аргумент переменной $ body для размещения. Когда я повторяю $ body в файле темы, ничего не появляется. Heres быстрый пример моих файлов

login.php

<?php 
include('../tools/global.php'); 

$body=" 
some scripting here"; 

?> 

global.php

<?php 

function function1(){ 

    global $body; 

} 
function1(); 
print_r($body); 

include('../theme/default.php'); 
include('config.php'); 


?> 

default.php ака theme.php файл

<table border='0'> 
<tr> 
<td colspan='2'> 
<center>bar</center> 
</td> 
</tr> 
<tr> 
<td width='10%'> 
hey<br>hey<br> 
</td> 
<td> 
hello 
<?php 

echo $body; 
?> 

</td> 
</tr> 
</table> 

Хорошо, так как именно я бы зарегистрировал глобальный $ body, чтобы он всегда отражал $ body в файле темы? Я пробовал много разных вещей, но ничего не работает.

+0

хорошо она выглядит, как ваш 'global.php' включен, и что' function1() ' вызывается до того, как вы на самом деле определите '$ body' –

+0

Если вы следуете потоку своего скрипта - проверьте, что первое событие, в котором вы объявляете переменную $ body. Это Login.php. И этот файл является * последним * файлом в последовательности. Сначала вы вызываете global.php. Он включает ваши темы. Php и config.php. На этом этапе вы эхом отозвали свое тело, но оно еще не существует. И после этого вы наконец объявите свой $ body. Это точно так же, как если бы вы задавались вопросом, почему вы не хотите, чтобы кто-нибудь позвонил вам на ваш новый iPhone, который вы еще не купили :) –

+0

Я получил его благодаря Богу! Большое спасибо всем. Я устанавливаю 'global $ body' в начале, а затем включаю' $ body [путь] 'в конце. В global.php я устанавливаю $ body [path] в '../theme/default.php, и теперь все работает OMG, это так здорово, что я потратил время, чтобы долго пытаться это сделать. Еще раз спасибо. – user2981166

ответ

0

Login.php включает global.php но $body определяется в Login.php только ПОСЛЕ global.php был включен - вот почему вы не можете использовать его в global.php

Если вы хотите использовать его в global.php - объявить его там!

0

Я думаю, что совет, который вам дал о том, как смотреть в глобалы, был, вероятно, плохим советом. Глобалы почти никогда не отвечают. Вы также используете их неправильно. Глобальное ключевое слово позволяет использовать глобальную переменную (определенную вне функции) внутри функции. Это так просто. Однако гораздо лучше использовать переменную в качестве аргумента. Когда у вас есть вещи, которые вы хотите использовать повторно в разных файлах, поместите их в функцию в include-файле, а не только в тело include-файла. Например, в global.php, у вас есть:

<?php 
function renderPage($body) { 
?> 
<table border='0'> 
<tr> 
<td colspan='2'> 
<center>bar</center> 
</td> 
</tr> 
<tr> 
<td width='10%'> 
hey<br>hey<br> 
</td> 
<td> 
hello 
<?php 

echo $body; 
?> 

</td> 
</tr> 
</table> 

<?php 
    } 
?> 

Тогда в login.php:

<?php 
require('global.php'); 
$body = 'This is the login page.'; 
renderPage($body); 
?> 
Смежные вопросы