🐯
I'm a Guesser
  • 💋ยินดีต้อนรับท่านผู้อ่านที่หลงเข้ามาทุกท่าน
  • 💖Laravel ลูกรัก
    • 🌞Service Provider คืออะไร ?
      • 🙋‍♀️EventServiceProvider
    • วิธีการเก็บ Log Request และ Response ใน Laravel ผ่าน Middleware และ Events
      • เก็บ Log ทุกๆ requests ผ่าน Middleware - ตอนที่ 1
      • Log http ทุกๆ requests ผ่าน Middleware - ตอนที่ 2
    • Service Container
    • Livewire
  • 🐘php
    • PSR คือ มาตรฐานการเขียนโค้ดที่ควรทราบ
      • PSR-0 มาตรฐานการโหลด File อัตโนมัติ
      • PSR-1 มาตรฐานของโค้ต
      • PSR-4 มาตรฐานการโหลดไฟล์อัตโนมัติ
  • 🌧️Cloud
    • 🦉ส่ง Project Golang ขึ้น Lambda
  • Amazon Web Services (AWS)
    • 🐓AWS คืออะไร
    • 😅AWS Lambda
  • Other
    • Privacy Policy
Powered by GitBook
On this page
  • ตัวอย่างการใช้งาน ServiceProvider เบื้องต้น
  • ข้อแตกต่างระหว่าง register() และ boot()
  • Reference
  1. Laravel ลูกรัก

Service Provider คืออะไร ?

ข้าคือผู้ให้บริการระบบของทุกสรรพสิ่ง

ServiceProvider

ใน Laravel มันเป็นส่วนหนึ่งของระบบที่เราสามารถจัดการระบบและสร้างสิ่งที่เรียกว่า "ผู้ให้บริการ" ให้กับเราได้

เช่น

  • บริการจัดการ container

  • บริการเตรียมสิ่งต่างๆก่อนการทำงานของระบบ หรือการกำหนดค่าต่างๆ

  • อื่นๆ

ซึ่ง มันเป็นส่วนหลักของการทำงานใน Laravel Application ของท่านทั้งหมด

ทุกครั้งที่ Laravel ถูกเรียกใช้งาน เจ้าตัว ServiceProvider ทั้งหมดจะถูกโหลดใช้งานทุกครั้ง เพื่อทำการลงทะเบียน หรือเตรียมชุดข้อมูลของท่าน เพื่อพร้อมสำหรับการทำงานของระบบของท่านต่อไป

นี่คือตัวอย่างไฟล์จาก app/Providers/AppServiceProvider.php

app/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        // ตรงนี้คุณสามารถลงทะเบียน หรือเตรียมการข้อมูลของท่านได้
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // ตรงนี้จะทำงานเมื่อระบบต่างๆ หรือ providers ต่างๆถูกลงทะเบียนแล้ว
    }
}

ซึ่งตัวไฟล์นี้มันจะถูกลงทะเบียนให้เรียกใช้งานที่ config/app.php

เอาหละ เรามาลองยกตัวอย่างซักหน่อย

ตัวอย่างการใช้งาน ServiceProvider เบื้องต้น

เมื่อท่านต้องการให้ระบบของท่านมีการถือข้อมูลอะไรก็ตาม เช่น ค่าของ version ของระบบ หรือ ข้อมูลอื่นๆ ที่ท่านต้องการให้ระบบของท่านมีการเรียกใช้งานได้ง่ายๆ

app/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        // ตรงนี้คุณสามารถลงทะเบียน หรือเตรียมการข้อมูลของท่านได้
        $this->app->bind('my-app-version', function () {
            return '1.0.0';
        });
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

อธิบายโค้ดด้านบนเบื้องต้นจาก Lifecycle ของ Laravel

  1. ตอนที่ Laravel ถูกเรียกใช้งาน ตัว AppServiceProvider จะถูกโหลดขึ้นมา

  2. ตอนที่ AppServiceProvider ถูกโหลดขึ้นมา ตัว register() จะถูกเรียกใช้งาน

  3. ใน register() ท่านสามารถลงทะเบียน หรือเตรียมข้อมูลต่างๆ ได้

  4. ในตัวอย่างด้านบน เราได้ลงทะเบียน my-app-version ให้กับ container ของ Laravel แล้ว

  5. ตอนที่มีการเรียกใช้งาน my-app-version จะได้ค่า 1.0.0 กลับมา

เช่น ใน Controller หรือ Blade Template ท่านสามารถเรียกใช้งานได้ดังนี้

app/Http/Controllers/MyController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyController extends Controller
{
    public function index()
    {
        $version = app('my-app-version'); // <-- ได้ค่า '1.0.0' กลับมา

        return $version;
    }
}

ข้อแตกต่างระหว่าง register() และ boot()

  • register() จะถูกเรียกใช้งานก่อนที่ Laravel Application จะถูกโหลดขึ้นมา ซึ่งใช้สำหรับการลงทะเบียน หรือเตรียมข้อมูลต่างๆ ให้กับ container ของ Laravel

  • boot() จะถูกเรียกใช้งานหลังจากที่ Laravel Application ถูกโหลดขึ้นมาแล้ว ซึ่งใช้สำหรับการทำงานต่างๆ หลังจากที่ทุกอย่างถูกโหลดขึ้นมาแล้ว

Reference

Previousยินดีต้อนรับท่านผู้อ่านที่หลงเข้ามาทุกท่านNextEventServiceProvider

Last updated 7 months ago

ท่านสามารถดูเพิ่มเติมได้ที่

💖
🌞
https://laravel.com/docs/providers
https://laravel.com/docs/providers