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

Я хочу определить что-то вроде этого в php :

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

и затем используйте эту переменную в качестве маркера «endline» на всем моем сайте, например так:

echo "Blah blah blah{$EL}";

Как определить $ EL один раз (только в 1 файле), включить его на каждую страницу моего сайта, и не нужно ссылаться на него, используя (странно задом наперед) global $EL;оператор в каждой функции страницы?

6 php
16.08.2008 05:05:09
10 ОТВЕТОВ
РЕШЕНИЕ

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

 include 'header.php';

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

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

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

7
16.08.2008 05:31:55

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

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

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

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

-1
16.08.2008 05:30:43

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

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

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

require 'config.php'

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

-1
16.08.2008 05:34:03

Похоже, работа постоянной. Смотрите функцию define () .

3
16.08.2008 08:44:31

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

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }
0
16.08.2008 09:30:05

Вы используете PHP5? Если вы определили функцию __autoload () и используете класс с некоторыми константами, вы можете вызывать их там, где они вам нужны. Единственное отягчающее обстоятельство в том, что вы должны набрать что-то немного дольше, например,

MyClass::MY_CONST

Преимущество состоит в том, что если вы когда-нибудь решите изменить способ обработки новых строк, вам придется изменить его только в одном месте.

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

Если бы я мог предложить предложение, я бы избегал такого рода эхо, которое требует наличия эхо-меток (например <br />). Если бы вы могли настроить что-то более шаблонное, вы могли бы обрабатывать nl без необходимости их явного ввода. Так что вместо

echo "Blah Blah Blah\n<br />\n";

пытаться:

<?php
if($condition) {
?>
<p>Blah blah blah
<br />
</p>
<?php
}
?>

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

1
16.08.2008 11:21:08

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

<?php

class SITE {
    public static $el;
}

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

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

Test();

?>

Это будет выводить <br />

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

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

0
9.09.2008 22:59:23

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

Увидеть:

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

0
10.09.2008 09:13:12

Сделайте это, define ('el','\n\<\br/>\n'); сохраните его как el.php

тогда вы можете включить любые файлы, которые вы хотите использовать, т.е.

эхо «что-то» .el; // обратите внимание, я просто добавляю el в конце строки или перед

Надеюсь это поможет

ПРИМЕЧАНИЕ, пожалуйста, удалите '\' после <br, так как я должен был вставить его, иначе в ответе не появится тег br ...

1
13.12.2010 20:03:44

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

Так что, если ваш файл prepend содержит:

<?php
define('FOO', 'badger');

В другом файле Php вы можете получить доступ к константе:

echo 'this is my '. FOO;
0
26.01.2020 22:29:48