Fais Lonelyman yang bergantung pada kehidupan cyber nya

Membuat Package Laravel

2 Men-bac

Pendahuluan

Package(paket) adalah cara utama menambahkan fungsi ke Laravel. Package(paket) merupakan bisa dibilang ekstensinya laravel seperti Karbon, atau seluruh kerangka pengujian BDD seperti Behat.

Tentu saja, ada berbagai jenis Package(paket). Beberapa Package(paket) itu individual, artinya semua paket bekerja dengan kerangka kerja PHP apa pun. Carbon dan Behat adalah contoh Package(paket) yang terpisah dari laravel. Setiap paket ini dapat digunakan dengan Laravel dengan memasukkannya kedalam file composer.json dengan official reponya composer Packagist

Di sisi lain, Package(paket) lain secara khusus ditujukan untuk digunakan dengan Laravel . Paket-paket ini mungkin terdiri route, controller, views, dan konfigurasi yang secara khusus ditujukan untuk meningkatkan aplikasi Laravel.Tetapi yang kita bahas nanti adalah cara membuatnya bukan cara penggunaanya

Bahan Yang Diperlukan

GLOBAL : PHP
1.Composer(Wajib)
Sangat diwajibkan menggunakan composer karena kita akan menggunakannya distep selanjutnya, jika belum terinstall silahkan gunakan

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

2.Laravel
Yep.. untuk membuatnya yang pasti kamu membutuhkan instalasi Laravel sebelumnya jika belum mempunyai nya kamu dapat menggunakan

composer global require "laravel/installer"

Jika step diatas sudah terpenuhi selanjutnya mari membuat paket tersebut

Membuat direktori package

Kita akan membuat package tersebut didalam folder packages bukan didalam vendor. Karena untuk folder vendor hanya boleh diatur dengan Composer. Jadi bisa dibilang folder vendor itu mutlat tak boleh diutak-atik. Kalau diganti atau dimodifikasi, setiap kita melakukan composer update Data yang berada didalam vendor dikembalikan seperti asal mulanya.
Buatlah Struktur folder seperti ini packages/{pengguna}/{nama-repo}/src
Jika sudah selanjutnya kita dapat men-init composer dengan cara

composer init

Setelah composer memulai prosesnya maka kita akan membuat file composer.json yang berisi seperti ini

"name": "qya/gravatarprofile",
"description": "Isi dengan deskripsi kalian...",
"type": "library",
"license": "MIT",
"minimum-stability": "dev",
"autoload": {
    "psr-4": {
        "Qya\\GravatarProfile\\": "src/"
    }
},
"authors": [
    {
        "name": "Qya",
        "email": "[email protected]"
    }
]

Mengintegrasikan Package yang dibuat ke Project Laravel

Agar bisa digunakan dengan project Laravel yang dibuat sebelumnya. Kita perlu mengintegrasikan atau menginclude package tersebut. Jadi package tersebut dapat kita panggil langsung dari folder package tersebut.

Tambahkan package tadi ke composer.json app kamu (bukan composer yang dipackage) di PSR-4

   "autoload": {
   "classmap": [
     "database/seeds",
     "database/factories"
   ],
   "psr-4": {
     "App\\": "app/",
     "Qya\\GravatarProfile\\": "packages/qya/gravatarprofile/src"
   }
 },

Kemudian kita akan menggunakan fungsi dump load composer untuk me-load package tersebut

composer dump-autoload

Menambahkan Provider di Packages

Kembali ke folder package tadi. Pada tahap ini dimana paket tersebut akan dimuat/boot pada app Laravel kita.

Arahkan ke root app Laravel, dan buat providernya


php artisan make:provider GravatarProfileServiceProvider

Secara otomatis provider yang dibuat tadi akan masuk ke folder app/Providers
Kemudian pindahkan file tersebut ke folder src pada package yang kita buat
Buka file tersebut dan ubah namespacenya user\package

<?php
namespace Qya\GravatarProfile;
use Illuminate\Support\ServiceProvider;
class GravatarProfileServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Membuat Controller Packages

Pada tahap ini kita perlu me-register controller agar dapat digunakan oleh Laravel. Bisa diperhatikan pada public function register()… yeah disitu akan kita load Controllernya

public function register()
{
    $this->app->make('Qya\GravatarProfile\Controller');
}

Selanjutnya kita buat file Controller.php
Sebagai contohnya kita ingin mengambil data dari Gravatar API

<?php 
namespace Qya\GravatarProfile; 
class GravatarProfileController { 
    public static function email($email) { 
         $guzzle = new \GuzzleHttp\Client();
         $res = $guzzle->request('GET', 'https://id.gravatar.com/'.md5($email).'.json');
        return $res->getBody();
    }
}

Kemudian kita bisa extend Controller yang berada pada App\Http\Controller

Percobaan Packages

<?php
namespace App\Http\Controllers;
use Qya\GravatarProfile\GravatarProfileController;

class HomeController() {
    public function index() {
        echo GravatarProfileController::email('[email protected]');
    }
}

Maka akan memunculkan result atau hasil dari Guzzle

{"entry":[{"id":"100894404","hash":"205e460b479e2e5b48aec07710c08d50","requestHash":"205e460b479e2e5b48aec07710c08d50","profileUrl":"http:\/\/gravatar.com\/beautesting1blog","preferredUsername":"beautesting1blog","thumbnailUrl":"https:\/\/secure.gravatar.com\/avatar\/205e460b479e2e5b48aec07710c08d50","photos":[{"value":"https:\/\/secure.gravatar.com\/avatar\/205e460b479e2e5b48aec07710c08d50","type":"thumbnail"}],"name":[],"displayName":"beautesting1blog","urls":[]}]}

 

Mempublikasikan Packages ke Packagyst

Well kita telah membuat package, sekarang saatnya dipublish ke packagist. Untuk mempublishnya kamu harus mengkoreksi composer.json dan folder package harus sesuai.
Contohnya qya/gravatarprofile akan dijadikan sebagai instalasi default di packagist
composer require qya/gravatarprofile:dev-master
Karena kamu push dimaster, untuk membuat versi kamu harus mempublikasinya pada branch GitHub.
Langkah nya sebagai berikut :
1. Push packagemu ke GitHub
2. Lakukan registrasi di Packagist
3. Hubungkan GitHub ke Packagist
4. Tambah package yang sudah dipush tadi ke Packagist
Untuk informasi packagyst kamu dapat membukanya di web dokumentasi officialnya

Informasi Packages

Jika kamu menggunakan laravel versi 5.5 kebawah kamu harus menambahkan provider untuk dapat menggunakannya abaikan jika versi Laravel kamu diatas 5.5

Fais Lonelyman yang bergantung pada kehidupan cyber nya