const
(только для C ++) Для людей, прибывающих с C, может показаться неожиданным, что в C ++ глобальные переменные const
имеют внутренние (или статические) связь. В C это не так, поскольку все глобальные переменные неявно extern
(т.е. когда отсутствует ключевое слово static
).
Пример:
// file1.cpp
const int test = 5; // in C++ same as "static const int test = 5"
int test2 = 5;
// file2.cpp
extern const int test;
extern int test2;
void foo()
{
int x = test; // linker error in C++ , no error in C
int y = test2; // no problem
}
correct would использовать файл заголовка и включить его в file2.cpp и file1.cpp
extern const int test;
extern int test2;
. В качестве альтернативы можно было бы объявить переменную const
в файле file1.cpp с явным extern
Вы можете указать путь абсолютной файловой системы к include:
include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/header.php");
при использовании PHP 5.3+ Попробуйте использовать:
include_once(__DIR__.'/includes/header.php');
DIR - волшебная константа, которая вернет полный каталог, в котором находится файл.
Я бы просто добавил ваш каталог includes
в include_path
. Например, в index2.php
set_include_path(implode(PATH_SEPARATOR, [
__DIR__ . '/includes', // relative to this file, index2.php
get_include_path()
]));
include_once 'header.php';
и аналогично в business/index.php
...
set_include_path(implode(PATH_SEPARATOR, [
__DIR__ . '/../includes', // relative to this file, business/index.php
get_include_path()
]));
include_once 'header.php';
Лично я использовал бы PSR-0 сопоставления имен файлов и классов и настройка автозагрузчика, например
class EncryptionClass { ... }
spl_autoload_register(function($class) {
require_once __DIR__ . '/includes/' . $class . '.php';
});
$encryptionClass = new EncryptionClass();