Старое содержимое этого ответа теперь устарело . См. Другие ответы на основе MutationObserver
.
Большинство сайтов PHP должно иметь файл (я называю его заголовком), что Вы включаете на каждой странице сайта. Если Вы помещаете ту первую строку кода в заголовочный файл, то включаете его как это на каждой странице:
include 'header.php';
Вы не должны будете использовать глобальное ключевое слово или что-либо, вторая строка кода, которую Вы записали, должна работать.
Править: О, извините это не будет работать в функциях... теперь я вижу Вашу проблему.
Редактирование № 2: хорошо, послушайте мой исходный совет с заголовком, но используйте определение (), а не переменная. Они работа в функциях, будучи включенным.
Вы используете PHP5? Если Вы определяете __, автозагрузка () функционирует и использует класс с некоторыми константами, можно назвать их, где Вам нужны они. Единственная вещь ухудшения об этом состоит в том, что необходимо ввести что-то немного дольше, как
MyClass::MY_CONST
Преимущество - то, что, если Вы когда-нибудь решаете изменить способ, которым Вы обрабатываете новые строки, только необходимо изменить его в одном месте.
Конечно, возможное отрицание - то, что Вы звоните включая дополнительную функцию (__ автозагрузка ()), выполняя ту функцию (при ссылке на класс) который затем загружает другой файл (файл класса). Это могло бы быть больше служебным, чем это стоит.
Если бы я могу предложить предложение, оно избежало бы этого вида повторения, которое требует отзывающихся эхом тегов (как <br />
). Если Вы могли бы настроить что-то немного больше шаблона-esque, Вы могли бы обработать nl's, не имея необходимость явно вводить их. Таким образом вместо
echo "Blah Blah Blah\n<br />\n";
попытка:
<?php
if($condition) {
?>
<p>Blah blah blah
<br />
</p>
<?php
}
?>
Это просто кажется мне как звонок классам или включая переменные в функциях, а также является большой работой, которая не должна быть сделана, и, если вообще возможный, тех видов ситуаций лучше всего избегают.
Походит на задание константы. Посмотрите, что функция определяет ().
@svec да, это будет, Вы просто, должны включать файл в функции также. Это - то, как большая часть моего программного обеспечения работает.
function myFunc()
{
require 'config.php';
//Variables from config are available now.
}
svec, используйте платформу PHP. Просто любой - существует многие из них там. Это - правильный способ сделать это. С платформой у Вас есть однократная точка для Вашего приложения, таким образом определение по всему сайту переменных является легким и естественным. Также Вы не должны заботиться о включении заголовочных файлов, ни проверке, если пользователь будет зарегистрирован на каждой странице - то достойная платформа сделает это для Вас.
См.:
Инвестируйте некоторое время в изучение одного из них, и это заплатит очень скоро.
Другая опция состоит в том, чтобы использовать объект с общедоступными статическими свойствами. Я раньше использовал $GLOBALS, но большинство редакторов не делает автоматического полного $GLOBALS. Кроме того, неинстанцированные классы доступны везде (потому что Вы можете instatiate везде, не говоря PHP, Вы собираетесь использовать класс). Пример:
<?php
class SITE {
public static $el;
}
SITE::$el = "\n<br />\n";
function Test() {
echo SITE::$el;
}
Test();
?>
Это произведет <br />
Это также легче иметь дело с, чем costants, поскольку можно поместить любой тип значения в свойстве (массив, строка, интервал, и т.д.), тогда как константы не могут содержать массивы.
Это было предложено моему пользователем на форумах PhpEd.
IIRC общее решение является простым файлом, который содержит Ваши объявления, которые Вы включаете в каждый исходный файл, что-то как 'constants.inc.php'. Там можно определить набор переменных всего приложения, которые затем импортируются в каждом файле.
Однако, необходимо предоставить включать директиву в каждом исходном файле, который Вы используете. Я даже видел некоторые проекты использовать эту технику для обеспечения локализаций для нескольких языков. Я предпочел бы gettext путь, но возможно этот вариант легче работать с для среднего пользователя.
отредактируйте Для своей проблемы, я повторно комментирую использование $GLOBALS [], вижу Пример № 2 для деталей.
Если бы это все еще не применимо, я попробовал бы к digg вниз объекты PHP5 и создал бы статическую Singleton, которая обеспечивает необходимые статические константы (http://www.developer.com/lang/php/article.php/3345121)
Сессии будут Вашим лучшим выбором, если данные являются конкретным пользователем, еще просто используйте conifg файл. config.php:
<?php
$EL = "\n<br />\n";
?>
Затем на каждой странице добавляют
require 'config.php'
Вы смогут получить доступ к $EL на той странице.