У меня есть файл конфигурации, который включен в каждую часть сайта. Это выглядит примерно так (я убрал много лишних строк для примера):
//Company info
define("COMPANY_NAME", "Test Company");
define("COMPANY_EMAIL", "[email protected]");
define("META_KEYWORDS", "");
define("META_DESCRIPTION", "");
//**********************************************************************
//Remember to change this when working Local or on the Production Server
define("DB_SERVER", "127.0.0.1");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_SELECTED_DB", "adminpanel");
Одна из строк этого config.php
Файл содержит это:
$_ITEM_TYPES = array(
1=>"admin",
2=>"page",
3=>"repository");
Я работаю в файле, где это config.php
включен, и я могу использовать константы, такие как COMPANY_NAME, COMPANY_EMAIL и так далее … но когда я собираюсь использовать массив $ _ITEM_TYPES, он выдаст неопределенную ошибку переменной: /
Я использовал функцию get_included_files()
и файл действительно включен! Я не знаю, почему я не могу использовать этот массив.
PHP-файл menu.php
include_once("../config.php");
echo COMPANY_NAME;
//Echoes the value correctly
var_dump($_ITEM_TYPES);
//Throws error
Есть идеи? Спасибо всем заранее.
Я собираюсь снимать в темноте здесь. Я на 99% уверен, что причина вашей проблемы в том, что вы включаете этот файл где-то еще. Используя include_once
он не будет включать файл снова, потому что он был включен ранее, однако в другой области, которая вызывает неопределенную переменную ошибку.
Если вы хотите, чтобы этот массив конфигурации был доступен глобально, вы можете использовать $GLOBALS
, но это плохая практика.
Других решений пока нет …