Нужна помощь с PHP "include" - Как сохранить путь к моему сайту в переменной? - PullRequest
0 голосов
/ 20 октября 2010

Я использую следующую схему для включения файлов PHP:

require($_SERVER['DOCUMENT_ROOT'] . "Path/To/My/Website/Path/To/My/File.php");

Я хотел бы сохранить

$_SERVER['DOCUMENT_ROOT'] . 'Path/To/My/Website'

в некоторой переменной, скажем $my_website и напишите:

require("$my_website/Path/To/My/File.php");

Таким образом, если я решу изменить путь к своему веб-сайту, мне нужно будет изменить его только в одном месте в моем коде.

Некоторые файлы PHP могут быть включены несколько раз и из разных уровней каталогов. Например:

$_SERVER['DOCUMENT_ROOT']
                         Path
                             To
                               My
                                 Website
                                        Dir1
                                            a.php
                                        Dir2
                                            b.php that includes a.php
                                        Dir3
                                            Dir4
                                                c.php that includes a.php

Однако я не могу думать, как это сделать.

Пожалуйста, предложите.

Ответы [ 3 ]

1 голос
/ 20 октября 2010

Использование include path - сделает вашу жизнь проще (вы можете управлять ею даже из .htaccess).

1 голос
/ 20 октября 2010

Я могу придумать два способа сделать это:

  1. Создать общий файл, включенный в каждый другой файл, который устанавливает вашу переменную $my_website
  2. Добавить путь к вашему сайтуна ваш include_path, чтобы вам вообще не приходилось использовать путь вашего сайта для включения ваших файлов (require "Path/To/My/File.php";)
0 голосов
/ 20 октября 2010

Я установил константы для BASE_PATH и BASE_URI в моем файле config.php, который находится в той же папке, что и скрипты, и включается в каждый скрипт (require('config.php')):

define('BASE_PATH', '/filesystem/path/to/application');
define('BASE_URI', '/uri/home');

Тогда вы можете использовать:

require(BASE_PATH . '/file.php');

Еще один совет - если у вас есть отдельные сайты разработки и живые сайты, вы можете поместить эти определения в переключатель:

$mode = 'dev';
switch($mode){
    case 'dev':
        define('BASE_PATH', '/filesystem/path/to/application');
        define('BASE_URI', '/uri/home');
    break;
    case 'live':
        define('BASE_PATH', '/different/path/to/application');
        define('BASE_URI', '/');
    break;
}
...