Основной вопрос об области видимости переменных

  • Автор темы Денис14
  • 40
  • Обновлено
  • 13, May 2024
  • #1
Веб-сайт, который я редактирую, будет состоять из множества файлов PHP и некоторых других мелочей.

Я хотел бы, чтобы каждый из этих PHP-файлов имел доступ к определенным переменным, значения которых я хочу установить.

Например, одна из переменных указывает, должны ли отдельные веб-страницы, которые я показываю с помощью PHP, отображать значки для валидаторов HTML и CSS.

Я хочу иметь возможность установить где-нибудь переменную с именем $show_validators, равную либо «Y», либо «N», а затем все файлы PHP каким-то образом получат доступ к значению $show_validators.

У меня проблемы с тем, чтобы это произошло. Может кто-нибудь заверить меня, что это возможно сделать? Если это возможно, как мне это сделать? Я создал простой файл validators.php и поместил в него одну строку, в которой говорилось:
 if ($show_validators == "Y") {

include 'foo.shtml';
}
PHP: Затем в файлы, которым нужно знать значение $show_validators, я добавил эту строку:
 <php? include 'variables.php'; ?>
PHP: В следующей строке я использовал обычный if вот так:
 $show_validators = "Y";
PHP: Я действительно ожидал, что это сработает, но это не сработало.

Этот код даже не будет проверен валидатором HTML. Как правильно это сделать? У меня есть лишь практические знания HTML, и я не нашел четкого ответа на свой вопрос в руководстве по PHP.

Денис14


Рег
17 Apr, 2015

Тем
1

Постов
3

Баллов
13
  • 18, May 2024
  • #2
если это копирование и вставка вашего кода, то
 <?php include 'variables.php'; ?>
PHP: должно быть
 <php? include 'variables.php'; ?>
PHP: эта переменная должна быть доступна. Все становится сложнее, когда у вас появляются функции и классы, но ваш код довольно прост.
 

Nika2


Рег
24 Nov, 2015

Тем
0

Постов
3

Баллов
3
  • 18, May 2024
  • #3
Кроме того, все эти переменные должны храниться в базе данных (чтобы их можно было легко изменять и контролировать), и у вас должен быть метод или способ получения определенных переменных. Кроме того, переменные должны иметь значение либо 1 (да), либо 0 (нет).
 

7offers


Рег
11 Aug, 2014

Тем
0

Постов
3

Баллов
3
  • 20, May 2024
  • #4
Мне придется об этом подумать.

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



Если бы я поместил ее в базу данных, мне пришлось бы либо редактировать таблицу вручную с помощью phpMyAdmin или чего-то подобного, либо писать программу для вставки/обновления/удаления переменных; это больше работы, чем просто поместить его в тривиальную программу PHP, которую я могу отредактировать за две секунды.



Я не уверен, что преимущества оправдывают работу в этом случае, учитывая, что переменная просто делает что-то косметическое на веб-страницах.
 

Get-Click


Рег
29 Mar, 2013

Тем
0

Постов
2

Баллов
2
  • 01, Jun 2024
  • #5
Возможно, это должно быть так:
 if(isset($show_validators) && $show_validators == "Y")
{

include 'foo.shtml';
}
PHP: Иначе попробуйте установить для отчета об ошибках значение -1 и проверить?
 

dmitriy-s


Рег
29 Dec, 2012

Тем
1

Постов
4

Баллов
14
  • 13, Jun 2024
  • #6
Вы думаете об этом неправильно.

Если вам нужно вручную отредактировать конкретный PHP-файл, чтобы изменить что-то вроде этой глупости, вы делаете это неправильно.

Если вы получите больше настроек/переменных, вы получите больше файлов.

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

И опа, у тебя опечатка, или ты забыл что-то изменить и так далее и тому подобное. Если у вас простой административный интерфейс, вы можете вносить эти изменения прямо из него, все вместе сразу или только по отдельности.

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

S-zychkova


Рег
12 Aug, 2013

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966

Интересно