Статьи

Что такое пакеты Laravel?

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

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

Есть два типа пакетов; некоторые являются независимыми от фреймворка (автономными), а другие — для конкретной фреймворк . Этот учебник будет охватывать исключительно пакеты Laravel.

Перед созданием пакета вам необходимо знать о менеджерах пакетов. PEAR — это хорошо известный менеджер пакетов PHP, который, хотя и доступен, используется редко. Почему? Это заставило вас устанавливать пакеты для всей системы, а не для каждого отдельного проекта. Композитор стал преемником PEAR.

Одним из параметров для масштабирования мощности фреймворка является то, как разработчик перераспределяет полезные пакеты кода. Это позволяет разработчикам объединять приложения в несколько пакетов небольших приложений.

Действительно, пакеты предлагают отличный способ сгруппировать связанный код. Пакеты очень похожи на «Компоненты». Важно отметить, что исходный код Laravel является «пакетом», который Тейлор Отвелл называет DEFAULT_BUNDLE .

Одним из больших преимуществ пакетов Laravel является то, что они предоставляют доступ ко всем функциям, которые инфраструктура предлагает своему хост-приложению, включая маршрутизацию, миграции, тесты, представления и многие другие полезные функции. Другим важным преимуществом пакета является принцип СУХОЙ (не повторяй себя). Создавая пакет для кода, который вы часто используете, вы экономите ресурсы и повышаете производительность вашего приложения.

Теперь давайте представим несколько полезных пакетов Laravel. Пакеты, которые я использовал, включают в себя:

  • Генераторы : Одна из вещей, которые мне понравились в CakePHP, была его функция Bake. Это самая близкая вещь, которую я нашел в любой другой среде.
  • Ярый : Самопроверкаемые интеллектуальные модели для Eloquent ORM.
  • Помощник IDE . Этот пакет пытается исправить проблему с автозавершение кода в PhpStorm , создав файл помощника docblock, из которого IDE может получить подсказки.
  • Sayakb : Это приносит вам отличное приложение с капчей.
  • Behat : решение для тестирования вашего приложения с использованием методологии BDD.
  • Артдарек : Отличная OAuth-оболочка.
  • Макамара : Простая локализация i18n для вашего приложения Laravel.

Вы можете найти упаковочную способность, которая вам нужна в packalyst . Packalyst создает простой и социальный реестр пакетов для Laravel.

Создайте простой пакет аутентификации для Laravel 5.0. Для этого прежде всего вам нужен файл composer.json для вашего нового пакета:

json { "name": "alireza/myauth", "description": "How create your laravel 5 package", "license": "MIT", "authors": [ { "name": "Alireza Rahmani khalili", "email": "[email protected]" } ], "minimum-stability": "dev", "require": { "laravel/framework": "~5.0" }, "autoload": { "psr-4": { "Alireza\\Authentication\\": "src/" } } }

Класс Service Provider — это просто файл, который все правильно настраивает для пакета. Вот как должен выглядеть поставщик услуг в этом месте в src/MyAuthServiceProvider.php :

« `php namespace Alireza \ Authentication; использовать Illuminate \ Support \ ServiceProvider;

класс MyAuthServiceProvider расширяет ServiceProvider {

} « `

Добавьте поставщика услуг в config/app.php :

php 'Alireza\Authentication\MyAuthServiceProvider ::class',

Теперь Laravel знает о пакете. Вы можете спросить об «псевдониме» и почему я не добавляю его в свой app.php . Лично я добавляю псевдоним в метод register класса поставщика услуг вместо того, чтобы добавлять его вручную в файл конфигурации Laravel. Я займусь этим позже. Теперь создайте простой класс PHP с именем MyAuth в src/MyAuth.php :

« `php namespace Alireza \ Authentication;

использовать Config, Request, Session, Hash; использовать приложение \ пользователь;

Class MyAuth {public $ redirect_login = ‘/ users / home’; public $ redirect_logout = ‘/ users / logout’; public $ login = ‘/ user / login’; защищенные данные;

}

« `

Класс аутентификации должен связываться с IoC-контейнером Laravel с поставщиком услуг пакета. Перед этим создайте класс Facade, который позволит использовать методы класса без необходимости создавать новый экземпляр, а также другие преимущества, которые были указаны ранее. Так же, как класс MyAuth создал новый каталог Facades в каталоге Facades, создайте новый класс PHP и назовите его src/MyAuthFacade.php :

php namespace Alireza\Authentication; use Illuminate\Support\Facades\Facade; class MyAuthFacade extends Facade { protected static function getFacadeAccessor() { return 'MyAuth'; } }

После этого остается только загрузить пакет. Моя выглядит так:

php public function register() { $this->app['MyAuth'] = $this->app->share(function($app) { return new MyAuth; }); $this->app->booting(function() { $loader = \Illuminate\Foundation\AliasLoader::getInstance(); $loader->alias('MyAuth', 'Alireza\Authentication\MyAuthFacade'); }); }

Как видите, я связал класс Myauth с контейнером IoC. Теперь легко использовать класс MyAuth:

php MyAuth::login(['username'=>'[email protected]','password'=>'test']);

Это должно сгенерировать сообщение: Welcome log-in succeeded. При желании вы можете теперь зарегистрировать свой пакет в Packagist . Пакет MyAuth теперь зарегистрирован и может быть легко включен в Laravel с помощью команды composer: composer require "alireza/myauth" .

Если вы ищете пример популярного, зрелого пакета Laravel, вы можете проверить TerranetAdmin для Laravel.

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