fomiash

Какой PHP-фреймворк выбрать для новичка

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

Так как...

Читать далее
1
35

HLEB2 FAQ: Как обрабатывать запросы НЕ по HTTP? Вопрос

В некоторых случаях может понадобиться иметь вход в приложение не через индексный файл (изначально /public/index.php) в публичной директории и не консольную команду (файл /.console). Если веб-сервер направлен в публичную директорию, то могут возникнуть проблемы, если там находятся файлы, не используемые в HTTP-запросах. Но структура загрузки фреймворка позволяет создать новую папку в корне проекта для таких файлов и направить их обработчик в неё....

Читать далее
47
1

HLEB2 FAQ: Какие команды могут быть полезны для развертывания приложения на сервере? Вопрос

При автоматическом развертывании проекта на рабочем окружении (CD - continuous deployment) полезно автоматизировать подготовку проекта после внесения изменений в код. То есть каждый раз вам нужно будет сбрасывать кеш и выполнять дополнительные команды для приведения приложения в порядок. Для фреймворка HLEB2 это могут быть как собственные команды, так и использующие их кастомные команды (подробнее в...

Читать далее
18

Использование слеша в конце URL

Со слешем или без, как правильно?

Есть два типа распространённых вида URL(Uniform Resource Locator) для сайтов - это со слешем в конце и без слеша. Изначально предполагалось, что адрес со слешем указывает на директорию, в то время как адрес без слеша на файл. Со временем, когда эти URL стали участвовать в маршрутизации и потеряли связь со внутренней структурой папок и файлов сайта, стали встречаться различные варианты реализации. Например, WordPress и...

Читать далее
1
48

HLEB2 FAQ: Как вывести в лог информацию о каждом пользовательском запросе? Вопрос

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

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

Читать далее
13
Публикуйте, отвечайте, комментируйте...
Вы еще не зарегистрировались?
Войти

Настройка соответствия контроллер/метод для HLEB2 аналогично роутингу Yii2

В YII2 (да и не только в нём) по умолчанию маршруты автоматически распределяются по контроллерам и методам. Например, адрес /site/index будет указывать в контроллер SiteController и его метод actionIndex(). С одной стороны это удобно, но способствует тому, что разработчики делают огромные контроллеры со множеством методов, что встречается почти в каждом проекте на YII. В совокупности с неинтуитивным роутингом в YII такое автоназначение маршрутов...

Читать далее
1
154
4

HLEB2 FAQ: Как сократить вызов консольных команд до ./console? Вопрос

Возможно, что вы видели в других фреймворках как вызываются консольные команды, например в yii2 это может быть как php yii, так и просто ./yii. В инструкции фреймворка HLEB2 указывается только первый способ (php console), но, тем не менее, можно с помощью небольшой правки добавить и второй.

При вызове php console вызывается файл console содержащий php-код. Он инициализирует консольные команды и является для них точкой входа. Аналогично файл public/index.php похожий входной скрипт, но только для веб-сервера. Здесь всё просто.

Чтобы сократить этот вызов, используя второй способ, нужно добавить одну строчку в файл console, до тега "

Читать далее
11

HLEB2 FAQ: Какие бывают ошибки при начальном использовании фреймворка? Вопрос

Перечень возможных ошибок при установке и первом использовании фреймворка:

При первом запуске веб-сервер не отображает демонстрационную страницу.

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

HL01_ERROR **Не удалось сохранить кэш! Ошибка при записи файла в папку /storage/. Необходимо расширить права...

Читать далее
9

HLEB2 FAQ: Как использовать ORM для фреймворка? Вопрос

К фреймворку прилагается класс DB для выполнения запросов к базе данных, это простая обёртка над PHP PDO и не является ORM (объектно-реляционным отображением). Поэтому, чтобы подключить стороннюю ORM в проект с фреймворком HLEB2 нужно следовать трём простым пунктам:

  1. Выбрать и установить подходящую ORM.
  2. Задать в конфигурации настройки для этой ORM.
  3. Создать сервис для ORM инициализированный с настройками из конфигурации.

На примере...

Читать далее
17

HLEB2 FAQ: Как обработать исключения и ошибки в фреймворке? Вопрос

Обработка ошибок в PHP - важная составляющая разработки приложения. К стандартным классам ошибок в PHP фреймворк HLEB2 добавляет свои собственные. Перехватывая ошибку по её классу или родительскому классу можно определить её тип и пустить выполнение программы по соответствующему пути.

Если вы плохо представляете иерархию ошибок в PHP, предварительно ознакомьтесь со статьёй на эту тему.

Классы...

Читать далее
13

Настройки безопасности сайта на фреймворке HLEB2

HLEB2 — это фреймворк на PHP, который используется для создания веб-приложений и RESTful API. Хотя он сам по себе достаточно простой, безопасность остаётся важным аспектом при работе с любым веб-фреймворком.

Несомненно, вы хотите, чтобы ваш сайт был защищён от различных взломов и работал корректно. Так как эта тема посвящена фреймворку HLEB2, то подразумевается, что указанный сайт работает на этой основе. Есть много общих рекомендаций по...

Читать далее
1
170

Версионность (SemVer) во фреймворке HLEB2

SemVer (Semantic Versioning) - это соглашение о версионировании программного обеспечения, которое определяет структуру и семантику номеров версий. Основная цель SemVer — обеспечить четкое и последовательное понимание изменений в программном обеспечении.

Структура номера версии

Номер версии SemVer состоит из трех частей, разделенных точками.

Например: v3(major).1(minor).8(patch)

  • Основная версия (Major): Указывает на значительные изменения в...
Читать далее
2
70
1

HLEB2 FAQ: Как очистить кеш фреймворка? Вопрос

Страница в документации фреймворка.

Кешируемые шаблоны

Кеш, заданный вручную в коде фреймворка можно очистить через идентификатор:

use Hleb\Static\Cache;

$key = 'example_cache_key';
Cache::delete($key);

Чтобы очистить весь кеш, созданный собственными функциями фреймворка нужно выполнить команду:

php console --clear-cache

Сокращённый вариант выполнения для этой команды:

php console  -cc

...

Читать далее
1
9

Создание шаблона для Libarea

Этот сайт работает на платформе для коллективных блогов libarea. Недавно в репозитории Libarea была обновлена версия и внесено много улучшений. Посмотрел код проекта - он стал продвинутее и появились новые возможности. Но возникли проблемы с обновлением этого блога, потому что не следовал инструкции и изменил исходный код во многих местах, добиваясь нужного вида. В этот раз создам свой шаблон и опишу его создание, чтобы...

Читать далее
2
137

Бенчмарки контейнера HLEB2 us Slim Framework

Ранее опубликовал сравнение роутинга для Slim и HLEB2 при большом количестве маршрутов (иначе не было видно заметных различий), теперь пришёл черед реализации контейнера. Как и в прошлый раз получается, в Slim контейнер сторонний нужно установить, на выбор. Выбор пал на контейнер Symfony, так как слышал о нём лестные отзывы, что он без проблем может содержать несколько тысяч зарегистрированных...

Читать далее
3
112
fomiash fomiash
03 Мая

Бенчмарки маршрутов HLEB2 us Slim Framework

Несмотря на то, что Slim является микро-фреймворком, а HLEB2 перестал быть с приставкой "микро", по привычке провожу сравнение производительности последнего с микро-фреймворками.

Как известно, измерение вывода Hello World у фреймворков дело поверхностное. Однако, можно попробовать нагрузить маршрутизатор большим количеством роутов и посмотреть, что из этого выйдет. Для испытаний взял последнюю на данный момент версию...

Читать далее
2
239
1

Принципы MVC во фреймворке HLEB2

Структура проекта, объявленная как Model-View-Controller (Модель-Вид-Контроллер) давно не нова, к тому же, часто неправильно трактуется при использовании в Web, особенно в отношении backend.

Классическое взаимодействие подразумевает круговорот между этими частями приложения, по отношению к backend-фреймворку это означает следующее: сначала запрашивается Контроллер, затем при помощи Модели данные запроса преобразуются в данные ответа, а затем...

Читать далее
2
189

Переход на HLEB2 c первой версии фреймворка

В связи с выпуском второй версии фреймворка HLEB добавлю несколько рекомендаций к официальной документации для перехода с первой версии.

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

Так как HLEB2 теперь поддерживает асинхронность, то обратная совместимость была потеряна для многих его частей. Воспользовавшись этим, переходить так переходить, было переписано с нуля почти всё, что...

Читать далее
1
244

Обработка ошибок и исключений в PHP

PHP

После выхода PHP 7 механизм встроенных ошибок был сильно изменён и теперь представляет собой разделение на классы Error (Фатальная ошибка) и Exception (Исключение). Первый содержит перечень унаследованных от него типизированных классов для фатальных ошибок PHP, а Exception должен содержать исключения с возможностью обработки, которые будут от него унаследованы. Вместе эти два основных класса объединены интерфейсом Throwable, соответственно и...

Читать далее
2
369
fomiash fomiash
01 Ноября 2023

Использование замыканий в PHP

PHP

Замыкание в PHP - это способность анонимной функции взаимодействовать с её окружением. То есть переменные из контекста замыкания могут быть использованы внутри функции.

Анонимная функция - это обычная функция не имеющая названия. Может быть присвоена переменной и не только, также может быть возвращаемым результатом функции или метода, аналогично экземпляру внутреннего класса Closure, которым представлена.

Пример обычной...

Читать далее
2
468


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.