я могу объявить переменную после вывода переменной ???PHP - PullRequest
0 голосов
/ 12 сентября 2011

Как это ...

 echo $title;

 $title = 'Jelly';

Я спрашиваю только потому, что у меня есть файл заголовка, перед которым я объявляю $ title на некоторых своих страницах, хотя на странице есть разные разделы с использованием простого $ _GET ['tab'] === 'blahblahblah';

Но эти переменные $ _GET объявляются после того, как я вызвал файл заголовка ...

Ответы [ 3 ]

1 голос
/ 12 сентября 2011

Но эти переменные $ _GET объявляются после того, как я вызвал файл заголовка ...

это то, что вы делаете неправильно.

Вызывайте только заголовокпосле того, как вы получите все необходимые данные.

Для этого вам нужна правильная архитектура сайта.
Разделите ваш код на 3 части:

  1. основной шаблон сайта (включая ваш заголовок)
  2. определенный шаблон страницы
  3. код страницы.

При этой настройке вы никогда не столкнетесь с такой проблемой.
Типичный скрипт может выглядеть так

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
// setting title for using in the main template
$pagetitle = "Links to friend sites";
//etc
//set page template filename
$tpl = "links.tpl.php";
//and then finally call a template:
include "main.tpl.php";
?>

где main.tpl.php - это шаблон вашего основного сайта, включая общие части, такие как верхний и нижний колонтитулы, меню и т. Д .:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

и links.tpl.php - фактический шаблон страницы:

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>
1 голос
/ 12 сентября 2011

Нет. если вы выводите $ title, он ничего не выдаст, если $ title не был предварительно установлен на что-то другое, или если у вас не включена опция register_globals в php (php <5.3.0), а «title» является параметром запроса. </p>

Если вы спрашиваете, разрешено ли вам это делать, тогда абсолютно. Переменная изменится на «Jelly», но это конкретное значение не отобразится, как описано выше.

0 голосов
/ 12 сентября 2011

Вы не должны использовать $ title до того, как объявите его (PHP выдаст уведомление об использовании необъявленной переменной и ничего не выведет, потому что значение $ title будет нулевым).Переменные $ _GET устанавливаются средой (веб-сервером), и вам не следует присваивать им значения - вы просто должны прочитать значения, полученные в переменной $ _GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...