➳ Предыстория этого блога ❂ ↑
Итак, наконец-то добрался до пробы мультиблогового движка, на котором сделан этот сайт, здесь есть еще много всего, сервис "вопросы и ответы", каталог ресурсов, но мне пока что нужно проверить как работает блог. Несмотря на множество возможностей движка, оказалось, что страницы грузятся довольно быстро, и последнее мне приятно видеть (далее будет ясно, почему). Теперь же посмотрим, на что...
Как перенести панель отладки в секцию require-dev? Вопрос
Чтобы полностью отключить DEBUG- панель для production-сервера перенесите её в секцию require-dev файла composer.json. Локальные зависимости при этом нужно будет устанавливать с добавлением --dev
к команде composer.
Таким образом библиотека debugpan не будет устанавливаться при развертывании на конечном окружении, но включить её отдельно для текущего пользователя через специальный токен уже будет невозможно.
Как включить DEBUG панель для конкретного запроса, когда она отключена? Вопрос
Может возникнуть необходимость включить отладочную панель во фреймворке HLEB2 для текущего запроса. Например, если сайт на production-сервере, панель отладки отключена в конфигурации (так и должно быть), но необходима какая-либо информация из панели для разработчика сайта. Так как файл конфигурации обычный PHP-файл, то туда можно добавить условие. При этом сам фреймворк еще не загрузился, можно использовать только исходные возможности PHP....
Какой PHP-фреймворк выбрать для новичка
При выборе PHP-фреймворка, так сказать "для старта" может подойти любой из них, так как в целом принцип их работы одинаков. Однако лишние трудности на начальном пути могут привести к мнению, что тот или иной фреймворк не подходит, так как не полюбился с первого взгляда. Поэтому начинать лучше с фреймворков попроще, которые создают новичкам более-менее комфортные условия, подводя их к идее для чего собственно фреймворки нужны.
Так как...
Вы еще не зарегистрировались? Войти
HLEB2 FAQ: Как обрабатывать запросы НЕ по HTTP? Вопрос
В некоторых случаях может понадобиться иметь вход в приложение не через индексный файл (изначально /public/index.php) в публичной директории и не консольную команду (файл /.console). Если веб-сервер направлен в публичную директорию, то могут возникнуть проблемы, если там находятся файлы, не используемые в HTTP-запросах. Но структура загрузки фреймворка позволяет создать новую папку в корне проекта для таких файлов и направить их обработчик в неё....
HLEB2 FAQ: Какие команды могут быть полезны для развертывания приложения на сервере? Вопрос
При автоматическом развертывании проекта на рабочем окружении (CD - continuous deployment) полезно автоматизировать подготовку проекта после внесения изменений в код. То есть каждый раз вам нужно будет сбрасывать кеш и выполнять дополнительные команды для приведения приложения в порядок. Для фреймворка HLEB2 это могут быть как собственные команды, так и использующие их кастомные команды (подробнее в...
HLEB2 FAQ: Как вывести в лог информацию о каждом пользовательском запросе? Вопрос
Возможно, вы уже пользовались такими отчетами, в которых каждый запрос к сайту подробно логируется с тем, чтобы в дальнейшем найти определенный запрос и проверить его состояние.
Во фреймворке HLEB2 такой возможности изначально не предусмотрено, так как такие логи должны быть сознательно одобрены на проекте и их формат и включаемые данные должны быть составлены разработчиком. Дело в том, что при достаточно большом количестве такой...
Настройка соответствия контроллер/метод для HLEB2 аналогично роутингу Yii2
В YII2 (да и не только в нём) по умолчанию маршруты автоматически распределяются по контроллерам и методам. Например, адрес /site/index будет указывать в контроллер SiteController и его метод actionIndex(). С одной стороны это удобно, но способствует тому, что разработчики делают огромные контроллеры со множеством методов, что встречается почти в каждом проекте на YII. В совокупности с неинтуитивным роутингом в YII такое автоназначение маршрутов...
HLEB2 FAQ: Как сократить вызов консольных команд до ./console? Вопрос
Возможно, что вы видели в других фреймворках как вызываются консольные команды, например в yii2 это может быть как php yii
, так и просто ./yii
. В инструкции фреймворка HLEB2 указывается только первый способ (php console
), но, тем не менее, можно с помощью небольшой правки добавить и второй.
При вызове php console
вызывается файл console
содержащий php-код. Он инициализирует консольные команды и является для них точкой входа. Аналогично файл public/index.php
похожий входной скрипт, но только для веб-сервера. Здесь всё просто.
Чтобы сократить этот вызов, используя второй способ, нужно добавить одну строчку в файл console
, до тега "
HLEB2 FAQ: Какие бывают ошибки при начальном использовании фреймворка? Вопрос
Перечень возможных ошибок при установке и первом использовании фреймворка:
При первом запуске веб-сервер не отображает демонстрационную страницу.
Проблема может быть в том, что веб-сервер направлен не в публичную папку проекта, а в корневую или в другое место. Также это может указывать на неправильную настройку веб-сервера.
HL01_ERROR **Не удалось сохранить кэш! Ошибка при записи файла в папку /storage/
. Необходимо расширить права...
HLEB2 FAQ: Как использовать ORM для фреймворка? Вопрос
К фреймворку прилагается класс DB для выполнения запросов к базе данных, это простая обёртка над PHP PDO и не является ORM (объектно-реляционным отображением). Поэтому, чтобы подключить стороннюю ORM в проект с фреймворком HLEB2 нужно следовать трём простым пунктам:
- Выбрать и установить подходящую ORM.
- Задать в конфигурации настройки для этой ORM.
- Создать сервис для ORM инициализированный с настройками из конфигурации.
На примере...
HLEB2 FAQ: Как обработать исключения и ошибки в фреймворке? Вопрос
Обработка ошибок в PHP - важная составляющая разработки приложения. К стандартным классам ошибок в PHP фреймворк HLEB2 добавляет свои собственные. Перехватывая ошибку по её классу или родительскому классу можно определить её тип и пустить выполнение программы по соответствующему пути.
Если вы плохо представляете иерархию ошибок в PHP, предварительно ознакомьтесь со статьёй на эту тему.
Классы...
Настройки безопасности сайта на фреймворке HLEB2
HLEB2 — это фреймворк на PHP, который используется для создания веб-приложений и RESTful API. Хотя он сам по себе достаточно простой, безопасность остаётся важным аспектом при работе с любым веб-фреймворком.
Несомненно, вы хотите, чтобы ваш сайт был защищён от различных взломов и работал корректно. Так как эта тема посвящена фреймворку HLEB2, то подразумевается, что указанный сайт работает на этой основе. Есть много общих рекомендаций по...
Версионность (SemVer) во фреймворке HLEB2
SemVer (Semantic Versioning) - это соглашение о версионировании программного обеспечения, которое определяет структуру и семантику номеров версий. Основная цель SemVer — обеспечить четкое и последовательное понимание изменений в программном обеспечении.
Структура номера версии
Номер версии SemVer состоит из трех частей, разделенных точками.
Например: v3(major).1(minor).8(patch)
- Основная версия (Major): Указывает на значительные изменения в...
HLEB2 FAQ: Как очистить кеш фреймворка? Вопрос
Страница в документации фреймворка.
Кеш, заданный вручную в коде фреймворка можно очистить через идентификатор:
use Hleb\Static\Cache;
$key = 'example_cache_key';
Cache::delete($key);
Чтобы очистить весь кеш, созданный собственными функциями фреймворка нужно выполнить команду:
php console --clear-cache
Сокращённый вариант выполнения для этой команды:
php console -cc
...
Бенчмарки контейнера HLEB2 us Slim Framework
Ранее опубликовал сравнение роутинга для Slim и HLEB2 при большом количестве маршрутов (иначе не было видно заметных различий), теперь пришёл черед реализации контейнера. Как и в прошлый раз получается, в Slim контейнер сторонний нужно установить, на выбор. Выбор пал на контейнер Symfony, так как слышал о нём лестные отзывы, что он без проблем может содержать несколько тысяч зарегистрированных...
Принципы MVC во фреймворке HLEB2
Структура проекта, объявленная как Model-View-Controller (Модель-Вид-Контроллер) давно не нова, к тому же, часто неправильно трактуется при использовании в Web, особенно в отношении backend.
Классическое взаимодействие подразумевает круговорот между этими частями приложения, по отношению к backend-фреймворку это означает следующее: сначала запрашивается Контроллер, затем при помощи Модели данные запроса преобразуются в данные ответа, а затем...
Переход на HLEB2 c первой версии фреймворка
В связи с выпуском второй версии фреймворка HLEB добавлю несколько рекомендаций к официальной документации для перехода с первой версии.
Эти рекомендации вам могут пригодиться, если у вас уже был проект на фреймворке.
Так как HLEB2 теперь поддерживает асинхронность, то обратная совместимость была потеряна для многих его частей. Воспользовавшись этим, переходить так переходить, было переписано с нуля почти всё, что...
Отчет по подготовке версии HLEB 2.0
Оказалось, что написание новой версии фреймворка не самое главное, большую часть работы занимает написание тестов на все его функции и составление документации. Кроме этого, из-за изменений в ядре фреймворка, необходимо сделать новые версии всех его собственных библиотек. Мне бы не хотелось, чтобы его возможности оказались урезанными по сравнению с предыдущей версией, поэтому будет и обновление библиотек. Возможно, что 70% от всей...
Вместо отчёта по фреймворку HLEB 2
Вышел отчёт по фреймворку Yii2 на Хабре https://habr.com/ru/articles/737662/ Так получилось, что разбираясь с RoadRunner и другими вещами, залезал в репозитории Yii3 в том числе и попутно отправил несколько пулл-реквестов, заметив неточности, и в итоге теперь мои имя и фамилия оказались в списке благодарностей разработчикам Yii) Это приятно видеть и вместо отчета по своему фреймворку могу сказать, что процесс идёт и такие вот штуки - побочные его...
Заметки о переделке фреймворка HLEB
Как-то так вышло, что в предыдущих заметках более указывал на недостатки проектов/решений, чем находил их положительные стороны. Но, как часто бывает, если бы меня полностью устраивало все, то и в собственных проектах (так называемых пет-проектах) не было бы необходимости. В этом блоге упомянуты разнообразные подходы к созданию программных продуктов (Веб в основном), где упоминаю, что каждый отдельный случай нужно рассматривать...
В преддверии версии фреймворка HLEB 2.0
Есть предварительные наброски, как будет выглядеть версия 2.0 фреймворка, поэтому поделюсь ими, дабы эти изменения не стали неожиданностью.
PHP 8.3 - при том, что переписывание ядра фреймворка началось только сейчас, к тому времени, как оно будет закончено - скорее всего выйдет релиз PHP 8.3, то есть версия фреймворка 1.x будет от PHP 7.1 до 8.2. В версии PHP 8.3 не так много новинок, скорее это будет условная граница для фреймворка и библиотек, где...
Как установить фреймворк HLEB на хостинг TIMEWEB
Хостинг Timeweb считается довольно популярным в России, но, к удивлению, внешний вид админпанели выглядит устаревшим как по удобству использования, так и по дизайну и вёрстке. Тем не менее, развернуть проект на нём очень просто.
Изначально при регистрации создается директория с доменом вида xxxxx.tw1.ru. Подробнее можно настроить в Панели управления в разделе Сайты - Мои сайты, там будет указана...
Hlogin: Создание кнопок и страниц для регистрации
(!) Примеры и описание для более новой версии фреймворка HLEB2 могут отличаться от приведенных в тексте.
Библиотека Hlogin, выполненная на PHP и JavaScript, предоставляет модуль регистрации для фреймворка HLEB.
Кнопки и ссылки
В официальной инструкции к библиотеке даётся краткое описание создания собственных кнопок для регистрации пользователя, но дизайн их, как и кнопок формы по умолчанию, хоть и...