2016-11-06 2 views
0

мое приложение направляет каждый запрос через индексный файл. Этот файл содержитОпределение констант в индексном файле

require_once $_SERVER['DOCUMENT_ROOT'] . "/app/config/config.php".

Этот конфигурационный файл определяет константы пути, чтобы их можно было использовать в другом месте, но это не работает. Например, в config.php у меня есть

define('MODELS', $_SERVER['DOCUMENT_ROOT'] . "/app/models/");.

В одном из файлов модели я пытаюсь включить еще один класс, такие как

require_once MODELS . "classA.php"

class classB {.....}

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

config.php:

$root = $_SERVER['DOCUMENT_ROOT'] . "/"; 
define("APP",$root . "app/"); // app folder 
define("CONFIG",$root . "app/config/"); // config folder 
define("MODELS",$root . "app/models/"); // models folder 
define("CONTROLLERS",$root . "app/controllers/"); // controllers folder 
define("DB",$root . "app/db/"); // database connection folder 
define("VIEWS",$root . "app/views/"); // views folder 
define("FUNCTIONS",$root . "app/functions/"); // functions folder 
define("LIBRARY",$root . "app/library/"); // library folder 
define("PUBLIC",$root . "public/"); // public folder 

index.php:

require_once $_SERVER['DOCUMENT_ROOT'] . "/app/db/dbconnect.php"; 
require_once $_SERVER['DOCUMENT_ROOT'] . "/app/config/config.php"; 
require_once FUNCTIONS . "clean.php"; 
require_once MODELS . "core.php"; 
require_once MODELS . "user.php"; 
require_once MODELS . "browser.php"; 
require_once MODELS . "call.php"; 
require_once MODELS . "module.php"; 

ошибка происходит из некоторого файла:

if(isset($_POST['submit']) && $_POST['submit'] == "Send") 
{ 
require_once MODELS . "contact.php"; 
$contact = new contact(); 
} 
+0

'DEFINE («моделей», $ значение)' –

+0

@u_mulder жаль, что была опечатка, мой фактический код действительно включает кавычки – joshpj1

+0

Либо вы называете константы неправильно или ваш конфигурационный файл не включены. –

ответ

1

быстро исправить, но плохая идея:

использования ваш файл index.php как глобальный r точка восприятия вместе с магической константой PHP __DIR__.

index.php

require_once __DIR__."/config.php"; // This loads your constants 

config.php

define('PATH', __DIR__."/any_folder_you_want"); // Repeat this for your folders 

Делать это правильно:

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

Решения:

  • научиться использовать composer
  • реализовать PSR-4 самозарядные стратегию самостоятельно. Example here
Смежные вопросы