Литмир - Электронная Библиотека
A
A

Проект относительно небольшой, поэтому с моей точки зрения, это гораздо удобнее и нагляднее, да и полезнее, чем использовать XDebug или отладчик VS Code.

Постановка задачи

2.1 Требования к

модулю

Определимся с требованиями к модулю. Модуль должен:

Устанавливаться на любой сайт.

Использовать базу данных.

Пользоваться модулем могут только зарегистрированные пользователи.

Корректно выглядеть не нарушая основной дизайн сайта.

2.2 Предварительная логика работы

Оцениваем варианты выполнения раздела 2.1 по пунктам.

Установка:

а) Для того чтобы модуль мог работать на любых сайтах в первую очередь необходимы настройки файла .htaccess. Дело в том, что файлы модуля будут включаться в тело HTML файлов. А некоторые серверы не обрабатывают PHP код, внедренный в HTML документы. Решаем созданием файла .htaccess с нужной командой.

б) В связи с тем, что многие файлы будут подключаемыми необходимо указать корректные пути к этим файлам.

в) для простоты установки модуль должен быть выполнен в виде папки с файлами, и устанавливаться простым копированием этой папки в корень сайта.

База данных:

Модуль должен автоматически подключаться к базе данных и далее работать с ней. При отсутствии базы данных он должен её создать, а также автоматически создать в этой базе таблицы необходимые для работы. Решаем с помощью запросов к MySQL.

Доступ:

а) Необходима авторизация пользователей. Регистрация пользователей должна исключать регистрацию ботов. Поэтому модуль должен содержать минимальную защиту от подобных регистраций. Решаем с помощью капчи и подтверждения регистрации по адресу электронной почты.

б) У администратора модуля должна быть возможность управления пользователями и комментариями. Решаем созданием административного раздела модуля.

4. Внешний вид:

а) Элементы модуля должны иметь свой стиль. Решаем в файле style.css модуля.

б) чтобы не сильно влиять на дизайн сайта элементы регистрации, авторизации и элементы непосредственного вывода комментариев необходимо разделить. Решаем созданием раздельных контроллеров для элементов авторизации и печати.

2.3 Реализация логики

PHP. Разработка модуля комментариев для сайта - _3.jpg

Рис. 4 Блок схема модуля,

Учитывая вышеизложенное, изобразим полученные результаты графически. Результат представлен на рис.3. Модуль комментариев будет представлять из себя папку, содержащую блоки кода в виде файлов и вложенных папок, указанных на рисунке 3.

2.4 Подключения, корень сайта

Как видно файлов достаточно много даже при самом схематичном рассмотрении. возникает вопрос, а как же они будут друг с другом взаимодействовать? Совершенно очевидно, что придется делать ссылки и вставки частей кода друг в друга. Возникает следующий вопрос: если модуль планируется подключать неизвестно к чему, т.е. не известен сайт, неизвестен хостинг, неизвестны директории, то как с этим неизвестно, чем взаимодействовать? Ведь необходимо прописывать пути. Каким образом? Немного теории.

Любой сайт  существует в двух измерениях[5]: реальном и виртуальном. Для всех посетителей – это виртуальный веб-сервер. На котором нет файлов, а есть виртуальные адреса URI. Если вы видите строку в браузере http://site.ru/ufo/phantom.html – это не файл. Это URI, виртуальный адрес. Никакого файла с именем phantom.html на сервере может вообще не быть. Вполне вероятно, что и папки ufo там тоже нет, а все URL адреса обрабатываются одним единственным PHP файлом. И браузер работает именно с виртуальными адресами. Браузер не может видеть реальную файловую структуру сервера. Он не видит никаких дисков C, D, E и т.д. он видит только URL адреса, а не файлы.

Для разработчиков, сайт – это программа, выполняющаяся на совершенно конкретном реальном компьютере. С совершенно конкретным жестким диском, директориями и файлами. И скрипт, работая со своими данными, подгружая другие скрипты, работает именно с реальными файлами, на реальном физическом диске.

Еще раз: ПУть к файлу скрипта и виртуальный адрес этого скрипта для просмотра в браузере – это не одно и то же

Как достучаться до файла? Вариантов два: абсолютный и относительный путь.

Если путь указывается от корня системы, то это путь абсолютный. Абсолютный путь в PHP – это полный путь к папке или файлу. Вот пара примеров для разных операционных систем:

•      С:\OpenServer\domains\test.ru\index.php – для Open Server на Windows

•      /var/www/html/test.ru/index.php – для Ubuntu

Как видим, это полный путь от корня диска до конкретного файла или папки.

Виртуальный адрес этого скрипта при просмотре через браузер, будет:

http://www. test.ru\index.php

Для браузера это самый полный путь, который только может быть. Он начинается от корня сайта.

В юникс-системах и на веб сайтах корень обозначается косой чертой "/", в Windows начинается c буквы диска.

Относительный путь – это путь без указания корня.

У относительных путей в PHP есть один недостаток – они строятся по своей логике, которую не интересуют наши желания. В результате этого нужный файл зачастую просто не обнаруживается. Происходит это потому что когда мы подключаем скрипт по относительному пути, например include ‘ufo.php’, то сначала PHP попытается найти этот файл в папках, указанных в директиве include_path, затем будет искать файл в папке, в которой находится подключающий скрипт, и под конец попытается найти файл в папке текущего рабочего каталога.

Что это значит на практике. Допустим у нас есть в корне сайта две папки chat и ufo, и в папке ufo у нас есть скрипт phantom.html. Так вот, при помощи относительного пути вставить наш phantom.html в файлы папки chat не получится. От слова никак не получится. Почему? Попробую привести аналогию с движением автомобиля.

PHP. Разработка модуля комментариев для сайта - _4.jpg

Рис. 5 относительный путь – дорога в одну сторону,

где СТАРТ – корень сайта.

Движение из точки старт возможно только в одном направлении. Или налево или направо. Мы не можем взять предметы в месте chat и затем отвезти их в место ufo. Если автомобиль выезжает из позиции старт в направлении ufo и по прибытии в ufo обнаружится, что нужные предметы для этого места отсутствуют, то все. Мы оказались у разбитого корыта. Вернуться назад за нужными предметами мы не можем. Движение одностороннее.

PHP. Разработка модуля комментариев для сайта - _5.jpg

Рис. 6 Абсолютный путь – двустороннее движение,

где СТАРТ – корень сайта.

При абсолютном же пути движение двустороннее и мы всегда можем вернуться обратно на старт. Отправится в ufo. Узнать, что там необходимо. Сделать крюк допустим до места chat и вернуться обратно уже с полным пакетом всего что надо. Если и сейчас что-то забыли, не вопрос. Можно опять съездить куда надо и вернуться. Т.е. абсолютный путь дает спокойное и предсказуемое поведение в точках назначения.

Поэтому использовать полностью относительные пути в PHP я бы не советовал вообще. Целесообразнее определить с помощью PHP корневую директорию веб-сервера, а местоположения файлов указывать относительно ее.

Значит остается абсолютный путь. Применительно к решению данной задачи есть два варианта по созданию абсолютных путей:

Вариант А: использовать константу __DIR__.

3
{"b":"759925","o":1}