Список констант пути

У меня есть файл с именем paths.php, который является первым файлом, который загружается при каждом запросе страницы. Я читал, что я должен сделать константу пути к корневой папке, но не для каждого файла, но главное, почему я сделал константы для часто используемых путей: при изменении пути мне не нужно обходить разные файлы, требующие изменения (ROOT . «/ путь / к / файлу»); вместо этого все, что мне нужно, это изменить постоянное значение. Список констант пути быстро растет, и каждый раз, когда я открываю этот файл, я чувствую, что что-то не так и что-то нужно изменить, поэтому я решил задать свой первый вопрос здесь. Я слышал об автозагрузке, но по моим (небольшим) знаниям это только для проектов ООП (пожалуйста, исправьте меня, если я ошибаюсь)? Этот проект выполнен без ООП только для практических целей, я хочу сделать хотя бы одну страницу без ООП, а затем перейти к ООП.

Итак, вот код, я надеюсь получить критику, советы и то, что мне следует изменить или сделать по-другому с аргументами, чтобы я мог учиться.
Это не полный файл, а его часть — пути модулей / шаблонов

// 04.
defined("MODULES") or define("MODULES", RESOURCES . "/modules");
defined("FUNCTIONS") or define("FUNCTIONS", MODULES . "/functions.php");
defined("AUTH") or define("AUTH", MODULES . "/authentication");
defined("AUTH_CONTROL") or define("AUTH_CONTROL", AUTH . "/auth-control.php");
defined("SIGN_UP") or define("SIGN_UP", AUTH . "/sign-up.php");
defined("SIGN_IN") or define("SIGN_IN", AUTH . "/sign-in.php");
defined("FORMS") or define("FORMS", MODULES . "/forms");
defined("FORM_CONTROL") or define("FORM_CONTROL", FORMS . "/form-control.php");
defined("FORM_ERRORS") or define("FORM_ERRORS", FORMS . "/form-errors.php");
defined("FORM_VALIDATION_FUNCTIONS") or define("FORM_VALIDATION_FUNCTIONS", FORMS . "/form-validation-functions.php");
defined("UPLOAD_IMG") or define("UPLOAD_IMG", MODULES . "/upload-image.php");

// 05.
// Templates Folder
defined("TEMPLATES") or define("TEMPLATES", RESOURCES . "/templates");
// Main Templates
defined("MAIN_TEMPLATES") or define("MAIN_TEMPLATES", TEMPLATES . "/main-templates");
defined("HEAD") or define("HEAD", MAIN_TEMPLATES . "/head.php");
defined("HEADER") or define("HEADER", MAIN_TEMPLATES . "/header.php");
defined("BANNER") or define("BANNER", MAIN_TEMPLATES . "/banner.php");
defined("FOOTER") or define("FOOTER", MAIN_TEMPLATES . "/footer.php");
defined("JS_FILES") or define("JS_FILES", MAIN_TEMPLATES . "/js-files.php");
// Content Templates
defined("CONTENT_TEMPLATES") or define("CONTENT_TEMPLATES", TEMPLATES . "/content-templates/");
// Form Templates
defined("FORM_TEMPLATES") or define("FORM_TEMPLATES", TEMPLATES . "/form-tmp");

1 ответ
1

Если это первое, что загружается на каждой странице, то вероятность того, что какая-либо из этих констант уже определена, очень мала. Зачем тогда определять их условно? Это константы, они всегда должны иметь одно и то же значение. Поэтому вы можете изменить:

defined("CONSTANT2") or define("CONSTANT2", CONSTANT1 . "/constant2");

к:

define("CONSTANT2", CONSTANT1 . "/constant2");

Одна из причин условного определения констант заключается в том, что вы не хотите перезаписывать константы, являющиеся частью PHP. На мой взгляд, есть лучший способ предотвратить это: выбрать более длинные имена констант. Поэтому вместо вызова константы HEADВы могли бы назвать это TEMPLATE_HEAD. Таким образом снижается вероятность конфликта имен.

Начиная с PHP 5.3 с 2009 года появилась возможность определять глобальные константы следующим образом:

const CONSTANT2 = CONSTANT1 . "/constant2";

Я знаю, что это чисто субъективно, но я предпочитаю такой синтаксис. Позже, когда вы начнете использовать ООП, это будет единственный синтаксис для констант класса.

Учитывая вышеизложенное, ваш код может выглядеть так:

// 04.
const FOLDER_MODULES            = FOLDER_RESOURCES . '/modules';
const MODULE_FUNCTIONS          = FOLDER_MODULES . '/functions.php';
const FOLDER_AUTH               = FOLDER_MODULES . '/authentication';
const AUTH_CONTROL              = FOLDER_AUTH . '/auth-control.php';
const AUTH_SIGN_UP              = FOLDER_AUTH . '/sign-up.php';
const AUTH_SIGN_IN              = FOLDER_AUTH . '/sign-in.php';
const FOLDER_FORMS              = FOLDER_MODULES . '/forms';
const FORM_CONTROL              = FOLDER_FORMS . '/form-control.php';
const FORM_ERRORS               = FOLDER_FORMS . '/form-errors.php';
const FORM_VALIDATION_FUNCTIONS = FOLDER_FORMS . '/form-validation-functions.php';
const IMAGE_UPLOAD              = FOLDER_MODULES . '/upload-image.php';

// 05.
// Templates Folder
const FOLDER_TEMPLATES          = FOLDER_RESOURCES . '/templates';
// Main Templates
const FOLDER_MAIN_TEMPLATES     = FOLDER_TEMPLATES . '/main-templates';
const TEMPLATE_HEAD             = FOLDER_MAIN_TEMPLATES . '/head.php';
const TEMPLATE_HEADER           = FOLDER_MAIN_TEMPLATES . '/header.php';
const TEMPLATE_BANNER           = FOLDER_MAIN_TEMPLATES . '/banner.php';
const TEMPLATE_FOOTER           = FOLDER_MAIN_TEMPLATES . '/footer.php';
const TEMPLATE_JAVASCRIPT       = FOLDER_MAIN_TEMPLATES . '/js-files.php';
// Content Templates
const FOLDER_CONTENT_TEMPLATES  = FOLDER_TEMPLATES . '/content-templates/';
// Form Templates
const TEMPLATE_FORM             = FOLDER_TEMPLATES . '/form-tmp';

Почему-то мне это намного легче для глаз.

  • Спасибо, я не могу проголосовать, потому что я здесь новенький, надеюсь, кто-нибудь это сделает

    — Лукас


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *