Сведения о вопросе

Kimsanov

02:17, 10th August, 2020

Теги

php    

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

Просмотров: 506   Ответов: 9

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

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

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

echo "Blah blah blah{$EL}";

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



  Сведения об ответе

screen

21:06, 1st October, 2020

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

 include 'header.php';

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

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

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


  Сведения об ответе

PAGE

18:29, 19th August, 2020

Звучит как работа постоянного человека. Смотрите функцию define() .


  Сведения об ответе

FAriza

05:40, 7th August, 2020

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

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

Эхо 'something'.el; / / примечание Я просто добавляю el в конце строки или спереди

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

NOTE пожалуйста, удалите ' \ ' после < br, так как я должен был поставить его, или он не будет показывать тег br на ответе...


  Сведения об ответе

ASER

23:47, 1st August, 2020

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

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


  Сведения об ответе

ЯЯ__4

14:36, 7th August, 2020

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

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }


  Сведения об ответе

baggs

03:40, 1st August, 2020

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

<?php

class SITE {
    public static $el;
}

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

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

Test();

?>

Это приведет к выходу <br />

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

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


  Сведения об ответе

crush

19:08, 18th August, 2020

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

Видеть:

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


  Сведения об ответе

baggs

09:39, 8th August, 2020

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

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

редактировать для вашей проблемы я рекомендую использовать $GLOBALS[], смотрите пример #2 для получения подробной информации.

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


  Сведения об ответе

dumai

19:09, 9th August, 2020

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

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

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

require 'config.php'

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться