fomiash

Как сделать подобие REST во фреймворке HLEB2? Вопрос

Маршрутизация фреймворка HLEB2 позволяет оптимизировать такие вещи как. REST. Например:

Route::any('/api/{type}/{target}/{id?}')
    ->controller('RestApi\\Controller', 'action[verb]');

Подробнее в документации

Таким образом можно создавать нужные контроллеры, в которых будет обращение к методам actionPost, actionGet, actionDelete и тд. с необязательным идентификатором сущности.

Здесь большое количество вариантов, можно сделать и вот...

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

Как задать путь к директории в конфигурации для HLEB2? Вопрос

Иногда в конфигурации может понадобиться указать корневую директорию, например, для sqlite, в таком случае можно воспользоваться предустановленной константой HLEB_GLOBAL_DIR (см. index.php)

'sqlite.name' => [
            'sqlite:' .   HLEB_GLOBAL_DIR  .  '/storage/main.db',
            'user' => '%username%',
            'pass' => '%password%',
            'options' => [],
        ],
14

Рекомендации PSR для произвольных объектов Foo и Bar

Если вы давно не заглядывали в стандарты PSR PHP-FIG, то многое могли пропустить:) Они развиваются постоянно и добавляются все новые интерфейсы. Сегодня хочу представить спецификацию PSR, которая регламентирует создание произвольных объектов в различных примерах использования. Это относительно новый репозиторий, но недавно вспомнил о нём и теперь расскажу подробнее.

Теперь, в случае если вам...

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

Как перенести панель отладки в секцию require-dev? Вопрос

Чтобы полностью отключить DEBUG- панель для production-сервера перенесите её в секцию require-dev файла composer.json. Локальные зависимости при этом нужно будет устанавливать с добавлением --dev к команде composer.

Таким образом библиотека debugpan не будет устанавливаться при развертывании на конечном окружении, но включить её отдельно для текущего пользователя через специальный токен уже будет невозможно.

28

Как включить DEBUG панель для конкретного запроса, когда она отключена? Вопрос

Может возникнуть необходимость включить отладочную панель во фреймворке HLEB2 для текущего запроса. Например, если сайт на production-сервере, панель отладки отключена в конфигурации (так и должно быть), но необходима какая-либо информация из панели для разработчика сайта. Так как файл конфигурации обычный PHP-файл, то туда можно добавить условие. При этом сам фреймворк еще не загрузился, можно использовать только исходные возможности PHP....

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

NoSQL база данных Redis

Здесь собрана сборная информация по базе данных Redis, которая может понадобиться при работе с этим хранилищем данных или если вас спросят о ней на собеседовании:)

Redis — это система для хранения данных, которая использует пары "ключ — значение". Вместо таблиц, как в реляционных или документоориентированных базах данных, такой тип БД имеет только ключи и соответствующие им значения. Он может хранить огромное количество таких пар —...

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

Основные изменения в версиях PHP

В этом списке не ставится целью перечислить все изменения между версиями в PHP, для этого существует официальная документация, но можно попробовать охватить относительно значимые изменения, произошедшие от версии 5.4 до текущего состояния (на момент написания это 8.4).

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

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

Индексы в SQL базах данных

Что такое индексы?

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

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

Транзакции в MySQL

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

Управление транзакциями

Управление транзакциями является важной частью работы базы...

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

Критерии ACID для транзакций в MySQL

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

ACID

Атомарность. Транзакция воспринимается как единое целое, и ее выполнение подразумевает, что или все действия выполняются успешно, или не выполняется ни одно. Это...

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

Нейросети как будущее разработки ПО

Трансформация текущих ролей программистов и ИИ (в перспективе).

С каждым годом мы видим всё больше примеров применения нейросетей и автоматизации при их помощи в программировании. Одним из наиболее интересных направлений является генерация тестов для проверки качества кода. Но давайте заглянем немного дальше: возможно, в будущем программисты будут заниматься главным образом созданием тестов, а нейросети — писать программный...

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

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

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

Так как...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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