Какой у вас метод каталогов в корне

Я создал 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.

Другие вопросы по тегам