Найти тему
Медиа Special

Как я разрабатываю сайты на PHP

Оглавление

Небольшой гайд.

Открытый код программы
Открытый код программы

За 3 года активной разработки проектов в web-среде для личного пользования и людям на заказ я вывел некоторую форму удобной сортировки проекта. Решил рассказать об этом людям, так как скоро буду менять стиль разработки.

Структурирование проекта

Прежде всего стоит разобраться со структурой проекта. Какое-то время я использовал длинные названия, понятные, но из-за них URL может удлиниться. Теперь мне больше по душе непонятные папки в духе «a», «f», «db» и прочее.

В корне я храню .htaccess, в котором описал ссылку на страницу 404, 403 и правила, которые убирают расширение .php из URL.

Также в корне храню папку «i» - тут все дополнительное для сайта: шрифты, стили, скрипты и изображения. В папке «i» расположены 4 папки: «a», «css», «img», «php».

Начнем с конца. Папка «php» имеет внутри себя 2 папки: «c» и «m». Папка «c» сокращение от слова component - тут хранятся части сайта: footer, header, head и прочие описанные заранее стили. Я выношу блоки в модули, как это происходит в ReactJS из-за удобства использования.

Папка «m» сокращение от слова module - тут хранятся обработчики событий. Например, тут я храню скрипт rb-mysql.php, позволяющий удобно обращаться к базе данных и обработчики, к которым ссылаюсь в формах или ссылках.

Папка «img» хранит картинки. Тут все просто, папка «logo» для логотипов и другие нужные папки, разбитые по категориям сайта.

Папка «css» хранит CSS стили моего сайта. В корне я храню файл app.css, в котором подключаю другие CSS-файлы с помощью @import. Такой вариант позволяет мне полноценно работать в 1 папке, созданной для CSS стилей и не менять структуру проекта в других его частях, тем самым усложняя.

Удобно хранения стилей в одной папке обосновывается также и использованием такого варианта для смены темы. Вместе с файлом app.css в корне папки «css» располагаются 2 файла: light.css, dark.css. В двух данных файлах описаны цвета, которые я использую в проекте. В зависимости от текущей темы я подключаю нужный файл, который, в случае чего, сменит цвета на сайте. Таким образом происходит смена темы на сайте.

И самое интересное - папка «a» - сокращение от слова another. Чаще всего здесь я храню весь «мусор», без которого нельзя обойтись. Я редко меняю файлы и папки, хранящиеся в папке «a». Именно поэтому я вынес данные файлы и папки в папку «a». К примеру, в папке «a» я храню стили Bootstrap, шрифты, JavaScript-код и сохранения с базы данных. В случае чего можно расширить количество хранимых здесь файлов и интегрировать иные решения, нужные для проекта.

Вспомогательные файлы, нужные для качественного сайта

Но просто папками и файлами PHP обойтись не получится. Да, можно создать отличный, оптимизированных с хорошей доступностью сайт. Но помимо наличия файлов страниц, нужны также вспомогательные файлы, описывающие сайт. Данные файлы обычный человек читать не будет, ему они не интересы. Данные файлы нужны для роботов-поисковиков, которые будут проверять ваш сайт и проходиться по нему.

Первый разобранный выше файл - это .htaccess. Нужен для того, чтобы, к примеру, изменить формат отображения URL-адреса. Также .htaccess позволяет совершать и другие действия, с которыми можно ознакомиться в интернете.

Файл sitemap.xml содержит в себе «код» в XML-формате. Данный файл хранит в себе все страницы сайта, их приоритет, время последнего изменения страницы и частоту изменения определенной страницы. К примеру, ознакомиться с данным файлом можно по адресу creagoo.ru/sitemap.xml.

Также имеется файл robots.txt. В нем хранится информация для роботов-поисковиков. Ссылка на sitemap и на различную информацию для роботов, к примеру какие пути доступны для обхода, а какие нет.

Также следует хранить файл icon.ico. Данный файл в строке адреса позволит вывести маленькое изображение-логотип сайта. Чаще всего данный файл нужен для уникальности страницы в выдаче.

Не совсем файл, но все же, для добавления дополнительной уникальности страницы можно использовать акцентный цвет. Добавляется стиль в head с названием «theme-color» и в content значение цвета в HTML-формате. Насколько мне известно, браузер Safari считывает данную информацию и отображает в заголовке.

Например, для медиа сайта можно использовать файл RSS. В него записывается информация о страницах. Если вы посмотрите медиа сайты, в footer’е вы увидите ссылку на RSS-канал. Это файл, хранящий какие-то записи. Часто данный RSS-файл можно подключить для какой-нибудь соц. сети, чтобы она отображала ваши последние страницы.

«Чистый» PHP или Laravel

Мы разобрали структуру сайта, посмотрели, каким образом следует хранить файлы проекта. Теперь разберемся, какой вариант следует использовать - просто PHP или фреймворк Laravel?

Сообщу, что транслируемое мнение - это сугубо мой личный опыт. Если ваш опыт отличается - это отлично.

Создание своего первого сайта я начинал именно с чистого PHP. Понятие «чистый PHP» означает, что используется язык программирования PHP и ничего более. Разработка происходит немного трудновато, потому что отслеживаются зависимости самостоятельно. Нет возможности интегрировать какие-то решения в свой проект.

Laravel, вроде бы, решает данные проблемы. Позволяет писать сайты круче. Но, правды ради, я не очень смог понять смысл Laravel’а для использования. Да, в него интегрированы тесты, лично я ими не пользуюсь, мне хватает собственного тестирования из-за малых размеров сайтов.

Laravel позволяет разделить ответственность на сайте: backend и frontend. Позволяет включать файлы в свой проект. Создавать многоязычные сайты. Обращаться к базе данных. Решать проблемы быстрее.

Но мой опыт использования Laravel ассоциировался только с болью. После каждого дня у меня переставал работать проект. Я начинал с более поздней версии Laravel. Переустановил, но все равно были какие-то проблемы и вечные ошибки, из-за которых мой проект не запускался.

Мне совсем не нравилось вечно исправлять проблемы. Вся суть вот в чем: после внедрения нового решения у меня спокойно запускался проект. Но после какого-то времени вместо запуска у меня в консоли выводились ошибки. Работу над проектом я произвожу на рабочей станции, после проекта Laravel я ничего не менял и не удалял.

Также и публикация проекта Laravel на сервер невероятно трудна: требуется менять зависимости, файлы. Мне было абсолютно непонятно, каким образом можно удобно загрузить проект на сервер. Отсутствие гостеприимства и оттолкнуло меня от использования Laravel.

Язык программирования для обработки backend-запросов

Я решил выбрать язык программирования PHP для обработки backend-запросов. Выбор сделан из-за очень простой причины: данный язык программирования развивается достаточно долго, имеет внутри себя хорошие технологические решения, упрощающие разработку, для данного языка программирования написано не мало фреймворков, которые можно использовать. Да и в целом, мне нравится данный язык программирования.

Фактически, можно использовать любой интересующий вас язык программирования: Python, C++, Rust. Я не считаю, что это так важно. Только если вы не создаете ресурс с большими оборотами пользователей или более узкой сферы использования.

В заключение я хотел бы выделить преимущества PHP: я использую его для модульности моего проекта, в качестве backend-обработчика. С помощью PHP можно получить возможность управлять GET-запросами и работать с формами.

Используйте то, что Вам нравится больше всего и подходит для решения задач. Удачи!