Хорошо, я создаю интерфейс администратора для своего пользовательского блога в url / admin.
Возможно ли, чтобы я мог использовать те же самые (включая автозагрузку), как корневой каталог.
Если возможно, я также хотел бы иметь возможность автоматически исправлять ссылки в навигации, чтобы они попадали в index.php в / changes на ../index.php при доступе из / admin.
Спасибо, Нико
Лучшей практикой для этого является определение константы «ABSOLUTE_PATH», которая содержит каталог, в котором находится все. После этого вы можете просто скопировать и вставить все, потому что он определяет путь «полный», который не изменяется из каталога в каталог.
пример
define("ABS_PATH", $_SERVER['DOCUMENT_ROOT']); or define("ABS_PATH", dirname(__FILE__)); // This defines the path as the directory the file is in.
Затем в любой момент вы можете просто сделать это, чтобы включить файл
include(ABS_PATH . "/path/to/file");
Самый простой способ – использовать абсолютные URL-адреса.
Для URL-адресов определите константу / переменную где-нибудь, которая указывает на корень вашего приложения, например:
define('ROOT_URL', 'http://www.example.com');
или
$root_url = 'http://www.example.com';
И используйте его в каждой ссылке, например:
<a href="{$root_url}/my-page.php">blah</a>
Таким образом, всегда в порядке (и в день, когда вы устанавливаете проект на другом сервере или в подкаталоге, у вас есть только одна константа / переменная для изменения, и все еще работает)
Для include / требуется всегда использовать абсолютные шаблоны; одним из решений является использование dirname
, например:
include dirname(__FILE__) . '/my_file.php'; include dirname(__FILE__) . '/../my-other-file.php';
__FILE__
– текущий файл, в котором вы пишете эту строку; dirname
получает путь (полный путь) к каталогу, содержащему этот файл.
При этом вам никогда не придется беспокоиться об относительных путях ваших файлов.
Еще один ответ будет аналогичен сочетанию первых двух предложений. Вы можете определить константу:
define('ABSPATH', dirname(__FILE__).'/');
Затем, предполагая, что config.php
необходимо включить во многие файлы сайта, вы можете использовать следующий оператор:
include(ABSPATH.'config.php');
Надеюсь это поможет.
Другой вариант, который я использовал для functions.php в прошлом, – это автозагрузчик классов.
//Class Autoloader spl_autoload_register(function ($className) { $className = strtolower($className); $path = "includes/{$className}.php"; if (file_exists($path)) { require_once($path); } else { die("The file {$className}.php could not be found."); } });
Это работает при определенных обстоятельствах и помогло мне в прошлом, когда я не хочу определять абсолютный корневой URL.