AthenaeumAthenaeum
Packages
  • next
  • current
  • v9.x
  • v8.x
  • v7.x
  • v6.x
  • v5.x
  • v4.x
  • v3.x
  • v2.x
  • v1.x
Changelog
GitHub
Packages
  • next
  • current
  • v9.x
  • v8.x
  • v7.x
  • v6.x
  • v5.x
  • v4.x
  • v3.x
  • v2.x
  • v1.x
Changelog
GitHub
  • Version 4.x

    • Release Notes
    • Upgrade Guide
    • New to this...
    • Origin
  • Circuits

    • Circuits
    • How to install
    • Setup
    • Usage
    • Events
  • Config

    • Configuration Loader
    • How to install
    • Setup
    • Load Configuration Files
    • Custom File Parsers
  • Console

    • Command and Schedule Registration
    • How to install
    • Setup
    • Commands
    • Schedules
  • Container

    • IoC Service Container
    • How to install
    • registerAsApplication()
    • destroy()
  • Core

    • Athenaeum Core Application
    • Prerequisite
    • How to install
    • Integration
    • Usage

      • Configuration
      • Service Providers
      • Service Container
      • Events
      • Caching
      • Logging
      • Console
      • Task Scheduling
      • Exception Handling
      • Extending Core Application
      • Testing
  • Dto

    • Data Transfer Object (DTO)
    • How to install
    • Create Interface
    • Implement DTO
    • How to use
    • Populate
    • Export
    • Json
    • Serialization
    • Nested DTOs
    • Array DTO
  • Events

    • Register Listeners and Subscribers
    • How to install
    • Setup
    • Listeners
    • Subscribers
  • Http

    • Clients

      • Http Clients
      • How to install
      • Setup
      • Basic Usage
      • Available Methods

        • Fluent Api
        • Protocol Version
        • Base Uri
        • Http Method and Uri
        • Headers
        • Accept & Content-Type
        • Authentication
        • Http Query
        • Payload Format
        • Payload
        • Attachments
        • Cookies
        • Response Expectations
        • Conditions
        • Criteria
        • Redirects
        • Timeout
        • Driver Options
        • Driver
      • Http Query Builder

        • Introduction
        • Select
        • Where
        • Dates
        • Include
        • Pagination
        • Sorting
        • Raw Expressions
        • Custom Grammar
    • Cookies

      • Http Cookies
      • How to install
      • Usage
  • Properties

    • Properties Overload
    • How to install
    • Usage
    • Naming Convention
    • Properties Visibility
  • Service

    • Service Registrar
    • How to install
    • How to use
  • Support

    • Introduction
    • How to install
    • Laravel Aware-of Helpers

      • How to use
      • Enforce Via Interface
      • Custom Default
      • Pros and Cons
      • Available Helpers
    • Aware-of Properties

      • Generator
      • Available Aware-of Helpers
    • Live Templates
  • Testing

    • Introduction
    • How to install
    • Test Cases
    • Testing Aware-of Helpers
  • Utils

    • Introduction
    • How to install
    • Array
    • Json
    • Math
    • Method Helper
    • Populatable
    • Version
You are viewing documentation for an outdated version. It is no longer supported!

How to use

Prerequisite

To use the Service Registrar, you MUST have an application instance available. The application MUST implement (or inherit from) \Illuminate\Contracts\Foundation\Application.

The Athenaeum Core Application meets this criteria.

Create instance

use \Aedart\Service\Registrar;

$registrar = new Registrar($application);

Register a Single Service Provider

Use the register() method to register a single Service Provider. The method accepts a class path or instance, as it's first argument.

use \Acme\Warehouse\Providers\StockServiceProvider;
use \Acme\Warehouse\Providers\TruckServiceProvider;

$registrar->register(StockServiceProvider::class);

// Or...

$registrar->register(new TruckServiceProvider($application));

Register Multiple Service Providers

The registerMultiple() allows you to register multiple Service Providers. Just like the register() method, it accepts class paths or instances.

$registrar->registerMultiple([
    // Class paths
    \Acme\Warehouse\Providers\StockServiceProvider::class,
    \Acme\Employees\Providers\EmployeesServiceProvider::class,
    
    // Can also register instance
    new \Acme\Warehouse\Providers\StockServiceProvider($application),
]);

Boot

The bootAll() method can be used to boot all Service Providers that have yet to be booted. See Laravel's documentation for additional information about the boot method.

$registrar->bootAll();

Note

If you choose to register additional providers, after already registered providers have been booted, then those newly registered will automatically be booted. Should this behaviour not suit your needs, then you can always disable booting during registration, via the $boot argument for the regsiter() method. The same is true for the registerMultiple() method.

// Register but do not boot
$registrar->register(MyServiceProvider::class, false);

Later, you can always invoke bootAll() to boot those providers that have yet to be booted.

See source code for additional information.

Edit page
Last Updated: 08/09/2020, 18:52
Contributors: Alin Eugen Deac
Prev
How to install