Как установить по всему сайту переменные в php?

Старое содержимое этого ответа теперь устарело . См. Другие ответы на основе MutationObserver.

5
задан Christian Mark 17 February 2013 в 07:06
поделиться

8 ответов

Большинство сайтов PHP должно иметь файл (я называю его заголовком), что Вы включаете на каждой странице сайта. Если Вы помещаете ту первую строку кода в заголовочный файл, то включаете его как это на каждой странице:

 include 'header.php';

Вы не должны будете использовать глобальное ключевое слово или что-либо, вторая строка кода, которую Вы записали, должна работать.

Править: О, извините это не будет работать в функциях... теперь я вижу Вашу проблему.

Редактирование № 2: хорошо, послушайте мой исходный совет с заголовком, но используйте определение (), а не переменная. Они работа в функциях, будучи включенным.

6
ответ дан 14 December 2019 в 01:22
поделиться

Вы используете 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
}
?>

Это просто кажется мне как звонок классам или включая переменные в функциях, а также является большой работой, которая не должна быть сделана, и, если вообще возможный, тех видов ситуаций лучше всего избегают.

1
ответ дан 14 December 2019 в 01:22
поделиться

Походит на задание константы. Посмотрите, что функция определяет ().

3
ответ дан 14 December 2019 в 01:22
поделиться

@svec да, это будет, Вы просто, должны включать файл в функции также. Это - то, как большая часть моего программного обеспечения работает.

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }
0
ответ дан 14 December 2019 в 01:22
поделиться

svec, используйте платформу PHP. Просто любой - существует многие из них там. Это - правильный способ сделать это. С платформой у Вас есть однократная точка для Вашего приложения, таким образом определение по всему сайту переменных является легким и естественным. Также Вы не должны заботиться о включении заголовочных файлов, ни проверке, если пользователь будет зарегистрирован на каждой странице - то достойная платформа сделает это для Вас.

См.:

Инвестируйте некоторое время в изучение одного из них, и это заплатит очень скоро.

0
ответ дан 14 December 2019 в 01:22
поделиться

Другая опция состоит в том, чтобы использовать объект с общедоступными статическими свойствами. Я раньше использовал $GLOBALS, но большинство редакторов не делает автоматического полного $GLOBALS. Кроме того, неинстанцированные классы доступны везде (потому что Вы можете instatiate везде, не говоря PHP, Вы собираетесь использовать класс). Пример:

<?php

class SITE {
    public static $el;
}

SITE::$el = "\n<br />\n";

function Test() {
    echo SITE::$el;
}

Test();

?>

Это произведет <br />

Это также легче иметь дело с, чем costants, поскольку можно поместить любой тип значения в свойстве (массив, строка, интервал, и т.д.), тогда как константы не могут содержать массивы.

Это было предложено моему пользователем на форумах PhpEd.

0
ответ дан 14 December 2019 в 01:22
поделиться

IIRC общее решение является простым файлом, который содержит Ваши объявления, которые Вы включаете в каждый исходный файл, что-то как 'constants.inc.php'. Там можно определить набор переменных всего приложения, которые затем импортируются в каждом файле.

Однако, необходимо предоставить включать директиву в каждом исходном файле, который Вы используете. Я даже видел некоторые проекты использовать эту технику для обеспечения локализаций для нескольких языков. Я предпочел бы gettext путь, но возможно этот вариант легче работать с для среднего пользователя.

отредактируйте Для своей проблемы, я повторно комментирую использование $GLOBALS [], вижу Пример № 2 для деталей.

Если бы это все еще не применимо, я попробовал бы к digg вниз объекты PHP5 и создал бы статическую Singleton, которая обеспечивает необходимые статические константы (http://www.developer.com/lang/php/article.php/3345121)

-1
ответ дан 14 December 2019 в 01:22
поделиться

Сессии будут Вашим лучшим выбором, если данные являются конкретным пользователем, еще просто используйте conifg файл. config.php:

<?php
$EL = "\n<br />\n";
?>

Затем на каждой странице добавляют

require 'config.php'

Вы смогут получить доступ к $EL на той странице.

-1
ответ дан 14 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: