$ _SERVER ['DOCUMENT_ROOT'] не включает PHP-проект Name [duplicate]

Отсутствует «extern» в объявлениях / определениях переменной 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

0
задан user2696691 31 January 2014 в 05:43
поделиться

3 ответа

Вы можете указать путь абсолютной файловой системы к include:

include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/header.php");

1
ответ дан John McMahon 28 August 2018 в 09:42
поделиться

при использовании PHP 5.3+ Попробуйте использовать:

include_once(__DIR__.'/includes/header.php');

DIR - волшебная константа, которая вернет полный каталог, в котором находится файл.

3
ответ дан Michael Pasqualone 28 August 2018 в 09:42
поделиться

Я бы просто добавил ваш каталог 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 сопоставления имен файлов и классов и настройка автозагрузчика, например

включает / EncryptionClass.php

class EncryptionClass { ... }

index2.php

spl_autoload_register(function($class) {
    require_once __DIR__ . '/includes/' . $class . '.php';
});

$encryptionClass = new EncryptionClass();
1
ответ дан Phil 28 August 2018 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: