Download the PHP package vasichmen/laravel-foundation without Composer

On this page you can find all versions of the php package vasichmen/laravel-foundation. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-foundation

Описание

Пакет с базовыми классами репозиториев, сервисов, реквестов для приложений на laravel. Базовый функционал включает в себя наиболее часто требующиеся методы и классы в любом приложении.

Установка

Примеры использования

AppServiceProvider

Базовая авторизация

Создаем новый мидлвар, наследуясь от AbstractBasicAuthMiddleware.php

Регистрируем в Http\Kernel.php в поле $routeMiddleware:

После чего надо добавить в конфиг auth.php секцию с настройками логинов и паролей:

Используем как обычный мидлвар на любых роутах или группах:

Полезные трейты

EnumTranslatable

Трейт, который можно подключить в любой enum, он добавляет метод trans() в элемент перечисления. Чтобы заработал перевод надо добавить файл /lang/<lang>/enums.php с содержимым примерно такого вида:

Получить перевод можно так:

Параметром $args можно передать массив аргументов для функции laravel trans(). Этот метод используется в методе AbstractResource->getEnum()

EnumValues

Добавляет к перечислениям статический метод values(), который возвращает массив всех значений этого перечисления

EnumDBCheckAlterable

Добавляет в миграцию метод alterEnum() для изменения поля с ограничением значений.

PartitionedByHash

Добавляет в миграцию метод makePartitionedTable, создающий таблицу, разделенную на партиции (только для Postgres)

Logger

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

Реквест и DTO

Реквест определяет правила валидации и (при необходимости) сообщения об ошибках, наследуется от AbstractRequest. DTO определяет структуру данных для прозрачности передачи данных внутри приложения, наследуется от GetListRequestDTO, в нем определены основные поля, используемые при получении списков с фильтрацией и пагинацией.

Для подключения валидации надо добавить \Laravel\Foundation\ServiceProviders\RequestServiceProvider::class в конфиг app.php

Чтоб подключить DTO к реквесту надо в реквесте переопределить поле $dtoClassName - имя класса DTO. При вызове метода $request->validated() проверяется существование класса DTO, его принадлежность к базовому классу и в конструктор передается массив параметров из реквеста. Внутри DTO в конструкторе ключи массива из реквеста приводятся в camelCase и данные из них записываются в соответствующие поля класса DTO. Таким образом для создания DTO достаточно только определить список полей с такими же именами, как в реквесте, но в camelCase. Для обратного преобразования в массив в DTO есть метод toArray().

Пример реквеста с сортировкой и постраничкой

Пример DTO

Такой реквест при вызове у него метода validated() вернет объект DTO. Чтобы возвращался массив, надо убрать указание DTO из реквеста. В поле sort в DTO вернется массив ключ=>значение, где ключ - название столбца, значение - направление сортировки

Если в классе DTO поле не будет найдено, то сгенерируется исключение DTOPropertyNotExists. Такое поведение задано по умолчанию для самопроверки, его можно изменить, переопределив метод parseData(), передав вторым параметром false, например вот так:

Модель

Использование кэширования при работе с моделями

Подключить провайдер \Laravel\Foundation\ServiceProviders\CacheServiceProvider::class в конфиг app.php

Простое кэширование с автоматическим сбросом при вызове событий eloquent: updated,created,deleted:

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

Для корректного хранения кэша в одной БД redis от нескольких микросервисов надо задать переменную SERVICE_NAME в .env

Методы getCacheTag, getCacheKey подключаются из трейта CacheKeysTrait

Репозиторий

Все репозитории наследуются от AbstractRepository. Для каждой модели создается репозиторий и регистрируется через провайдер. Для создания select запросов используется RepositoryBuilder. В нем определены основные методы фильтрации, получения связей и выборки результатов. Можно вызывать из RepositoryBuilder напрямую методы Builder, они проксируются на внутренний объект построителя запросов. Для остальных операций есть статические методы в AbstractRepository: create, update, updateOrCreate, delete, getModel.

Примеры:

Ресурс

Ресурсы делаются под каждую возвращаемую сущность (обычно это модели). Все ресурсы наследуются от AbstractResource. По сути ресурсы повторяют собой стандартные laravel JsonResource, но дополняются некоторыми методами.

Пример ресурса:

Метод $this->getEnum рендерит enum в структуру вида {code:<enum_code>,name:<название enum>}. Для получения названия вызывается метод trans трейта EnumTranslatable. Если enum не расширен этим трейтом, то будет ошибка NeedTranslatableEnumException.

Метод $this->getRelation добавляет в выдачу связь eloquent модели. Первым параметром передается название связи, вторым - класс ресурса для элементов этой связи. Если связь не загружена, то ключ добавлен не будет. Если связь загружена, то в ответ добавится ключ с названием связи.

Если надо вывести коллекцию элементов через ресурс, то есть стандартный статический метод collection:

Презентер

Обычно не требуется создавать кастомные презенторы и всегда пользуемся DataResultPresenter для вывода простых данных или расширяем этот класс.

Презентер с пагинацией

В качестве основного презентера с пагинацией выступает PaginatedDataPresenter

Пример использования без агрегаций:

Первым параметром передается объект LengthAwarePaginator, полученный из метода getList репозитория. Если коллекция получена другим способом, то можно установить в пагинатор нужную коллекцию через метод setCollection.

Вторым параметром передается коллекция или массив агрегаций (то, что рендерится в ключе filters). Обычно агрегации это возможные значения фильтров при установленных текущих фильтрах. Стандартная реализация заточена под ответ от elasticsearch, но можно переопределить метод aggregationToArray и задать любую другую логику.

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


All versions of laravel-foundation with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
ext-json Version *
laravel/framework Version ^9.32|^10.0|^11.0
graylog2/gelf-php Version ^2.0
monolog/monolog Version ^3.0|^2.0
guzzlehttp/guzzle Version >=7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package vasichmen/laravel-foundation contains the following files

Loading the files please wait ....