кодесурса
«Laravel

Laravel (5.7) Разработка пакетов

script1adsense2code
script1adsense3code

Создайте нашу папку для нашего нового пакета

Создать свежий проект Laravel;

laravel new core

После новой установки Laravel мы создаем новую папку под названием пакеты в корне нашего приложения.

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

Затем мы создадим папку внутри пакетов, которая будет именем нашего поставщика или компании. Так что для моего случая я буду использовать yoosuf.

Затем внутри этой папки мы создадим еще одну папку с именем нашего пакета ** калькулятор **.

Наконец, мы добавим одну последнюю папку с именем 'src', в которой будет жить код нашего pacakge.

Итак, наша структура папок будет

'Пакеты / Yoosuf / калькулятор / ЦСИ'

Хорошо, и теперь, когда у нас есть готовые папки, давайте продолжим и назовем наш пакет в нашем проекте, инициализировав файл 'composer.json'.

Назовите наш пакет и инициализируйте его с помощью composer

В командной строке перейдите в папку с именем вашего пакета. В нашем случае: «packages / yoosuf / calculator» и выполните следующую команду:

composer init

Это инициализирует текущую папку как пакет композитора и задаст вам ряд вопросов по настройке вашего пакета. Он запросит имя, описание, автора и немного больше информации о вашей посылке. После того, как вы закончите эту настройку на экране, у вас будет новый файл в папке пакета с именем 'composer.json'.

Не беспокойтесь, если вы не знаете ни одного из вопросов на этапах инициализации, просто нажмите Enter, чтобы пропустить его, и вы сможете добавить или отредактировать его позже.

Файл 'composer.json' будет выглядеть примерно так:

{
"name": "yoosuf/calculator",
"description": "This demo package will do some calculations",
"authors": [
{
"name": "YOUR NAME",
"email": "YOUR EMAIL"
}
],
"minimum-stability": "dev",
"require": {}
}

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

Загрузите наш пакет из нашего приложения composer.json

В каждом приложении Laravel есть основной файл composer.json в корне каждого нового приложения. Это ваш основной файл компоновщика приложения, и здесь мы определяем все зависимости нашего приложения.

Давайте продолжим и автоматически загрузим наш недавно созданный пакет с помощью блока автозагрузки «PSR-4»:

"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Yoosuf\\Calculator\\": "packages/yoosuf/calculator/src"
}
},

Затем нам нужен composer для запуска автозагрузчика и автозагрузки нашего пакета. Для этого мы запускаем следующую команду:

composer dump-autoload

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

php artisan optimize

Добавьте наш пакет услуг

Поставщик услуг является основной записью внутри нашего пакета. Здесь наш пакет загружается или загружается. В корне нашего приложения давайте создадим наш ServiceProvider с помощью команды ремесленника из командной строки:

php artisan make:provider CalculatorServiceProvider

Это создаст новый файл, расположенный в «app / Providers / CalculatorServiceProvider.php»

Давайте переместим этот файл в нашу папку с пакетом, чтобы он находился в «packages / yoosuf / calculator / src / CalculatorServiceProvider.php»

Не забудьте изменить свое пространство имен на «VendorPackage_name».

Как вы можете видеть в нашем новом классе Service Provider, у нас есть 2 метода boot () и 'register ()'. Метод «boot ()» используется для загрузки любых маршрутов, прослушивателей событий или любых других функций, которые вы хотите добавить в свой пакет. Метод register () используется для связывания любых классов или функций в контейнере приложения. Мы узнаем больше об этом на следующем шаге.

Затем нам нужно добавить нашего нового провайдера услуг в наш config / app.php внутри массива «provider []»:

'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
//.. Other providers
yoosuf\Calculator\CalculatorServiceProvider::class,
],

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

Добавьте наш пакет маршруты. Php файл

Давайте начнем с создания нового 'rout.php' внутри нашего каталога src пакета и добавим следующий код:

<?php
Route::get('calculator', function(){
echo 'Hello from the calculator package!';
});
Then let's include our routes.php file inside the 'boot()' method of our Service Provider:
public function boot()
{
//
include __DIR__.'/routes.php';
}

А теперь, если бы мы загрузили наше приложение laravel и посетили маршрут `/ calculator`. Я использую php artisan serve, поэтому я могу загрузить свой сайт с калькулятора `http: // localhost: 8000 /`. Тогда мы должны получить следующую страницу:

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

Создание нашего контроллера пакетов

Давайте создадим новый контроллер, выполнив следующую команду ремесленника:

php artisan make:controller CalculatorController

Затем давайте переместим этот контроллер из «app / Http / Controllers / CalculatorController.php» в «packages / yoosuf / calculator / src / CalculatorController.php».

Далее я создам 2 метода add () и subtract () внутри этого контроллера, поэтому содержимое файла будет выглядеть следующим образом:

<?php
namespace yoosuf\Calculator;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class CalculatorController extends Controller
{
//
public function add($a, $b){
echo $a + $b;
}
public function subtract($a, $b){
echo $a - $b;
}
}

Опять же, не забудьте изменить ваше пространство имен в вашем контроллере выше на 'vendorPackage_name';

Также обратите внимание, что нам нужно включить:

использовать AppHttpControllersController;

Так что наш контроллер знает, из какого класса Controller расширяться.

Теперь, когда мы создали наш контроллер, нам нужно его зарегистрировать. Внутри нашего класса Service Provider в методе register () мы добавим следующий код для регистрации нашего нового контроллера:

public function register()
{
// register our controller
$this->app->make('yoosuf\Calculator\CalculatorController');
}

Наконец, давайте добавим еще несколько маршрутов в наш файл «rout.php»:

Route::get('add/{a}/{b}',

'yoosufCalculator [электронная почта защищена] ');

Route::get('subtract/{a}/{b}',

'yoosufCalculator [электронная почта защищена] ');

Затем, если мы перейдем к «http: // localhost: 8000 / add / 5/2» и «http: // localhost: 8000 / subtract / 5/2», мы получим следующие результаты!

Далее, что если мы хотим загрузить несколько представлений из нашего пакета. Ну, это достаточно просто. Давайте сделаем это на следующем шаге.

Добавление просмотров для нашего пакета

Давайте создадим новую папку внутри папки src нашего пакета под названием views. Затем давайте создадим новый файл и назовем его «add.blade.php». Внутри add.blade.php добавим следующее:

<!DOCTYPE html>
<html>
<head>
<title>Calculator</title>
</head>
<body>
<h1 style="text-align:center">
Your Result
<span style="font-weight:normal">{{ $result }}</span>
</h1>
</body>
</html>

Теперь давайте зарегистрируем, откуда следует загружать эти представления, добавив строку кода в метод register нашего поставщика услуг:

public function register()
{
// register our controller
$this->app->make('yoosuf\Calculator\CalculatorController');
$this->loadViewsFrom(_DIR_.'/views', 'calculator');
}

Наконец, давайте изменим функции 'add ()' и 'subtract ()' внутри нашего контроллера Calculator, чтобы вызвать это представление:

public function add($a, $b){
$result = $a + $b;
return view('calculator::index', compact('result'));
}
public function subtract($a, $b){
$result = $a + $b;
return view('calculator::index', compact('result'));
}

Предыдущая: Laravel (5.7) Уведомления
Далее: Laravel (5.7) Очереди

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code