Какой у вас метод каталогов в корне
Я создал MVC, который имеет этот уровень организации, насколько папки и файлы настроек идут.
+[admin]
-[js]
-[css]
-[images]
-[classes]
--list of php classes
-[includes]
--config.php (includes db connection str
--functions.php (php functions)
--root---
[js]
[css]
[images]
[classes]
--list of php classes
-[includes]
--config.php (includes db connection str
--functions.php (php functions)
проблема, которую я имею с этой структурой, состоит в том, что, как вы видите, в разделе администрирования есть свои собственные папки классов, функций и файл конфигурации базы данных.
тогда корень для других страниц имеет свой собственный набор страниц для классов, функций и подключения к БД (который совпадает с администратором)
Я попытался иметь только одну папку для классов и другую для включений и так далее, чтобы раздел администратора и корневые страницы были общими, но в результате получается беспорядок включений, таких как паутина.
метод включения Ive попробовал это
include_once (dirname (FILE)./ directory /...) и что это делает, если я нахожусь внутри папки и я пытаюсь включить файл на один уровень выше текущей страницы, он не будет работать. и вместо того, чтобы использовать основной корневой каталог, он также включает в себя папку im. так что это не приносит никакой пользы.
так что если бы это был мой корень: d:/wamp/www/website/, и я включал что-то из основного корня в файл внутри каталога с именем functions, то dirname (FILE) фактически будет иметь значение d:\wamp\ WWW \ сайт \ функции \
Что является хорошим методом включения файлов без ошибок, пытаясь выяснить, что происходит.
Спасибо
2 ответа
Попробуйте что-то вроде этого и определите это в центральном конфигурационном файле.
Это даст одну единственную константу для всех ваших путей, а затем определит несколько других констант, вероятно, одну для каждой папки как ROOT_CLASSES и ADMIN_CLASSES, с соответствующими путями к файлам. Тогда это действительно просто включить вещи. Просто опишите это с константой и добавьте имя файла.
define ("ABS_PATH", "/ path / to / upper / most / directory"); // Руководство // определить другие пути... define("ADMIN_CLASSES", ABS_PATH . "/admin/classes/"); define("ROOT_CLASSES", ABS_PATH . "/root/classes/"); включают в себя (ROOT_CLASSES "/myclass.php".);
Если это находится в файле конфигурации вместе с другими объявлениями, вам не нужно беспокоиться об их определении позже.
Так я создаю макеты практически всех своих пользовательских сайтов.
- [site] этот каталог имеет только один файл index.php и является корнем домена
- [JS]
- [CSS]
- [изображений]
- [Модель]
- [Посмотреть]
- [Контроллер]
- [lib] - сторонний код, PHPMailer и т. д.
- [Конфигурация]
- [Админ]
- [JS]
- [CSS]
- [изображений]
- [Модель]
- [Посмотреть]
- [Контроллер]
Я использую __autoload для включения файлов. Есть несколько способов оптимизировать его производительность, и вам не нужно беспокоиться о включениях.
Я только помещаю специфичный для администратора код под admin, чтобы такие вещи, как jQuery, который используется как для публичного доступа, так и для доступа администратора, попадали в site/js.