Services Container

The Apex\Svc\ namespace contains various PSR compliant and other items that can be easily pulled in via attribute / constructor injection to aide in your development. You may view the ~/boot/container.php file to see and change the specific implementations being used for each PSR compliant service (eg. PSR-3 logger, PSR-6 cache, PSR-18 HTTP client, et al).

Loading Services

Services should always be loaded via attribute or constructor injection, for example:

<?php

namespace App\Demo;

use Apex\Svc\{Db, Cache, View};
use App\Demo\Models\Product;

/**
 * Demo class
 */
class MyDemoClass
{

    #[Inject(Db::class)]
    private Db $db;

    #[Inject(Cache::class)]
    private Cache $cache;

    #[Inject(View::class)]
    private View $view;

    /**
     * Do something
     */
    public function doSomething():void
    {

        $value = $this->db->getField("SELECT something from some_table WHERE id = 5");

        $this->view->assign('some_var', $value);
    }

}

Available Services

The following services are available within the Apex\Svc namespace:

Service Description
App The central Apex App class, and is also a PSR15 compliant RequestHandlerInterface object.
Cache PSR-16 compliant simple cache. Defaults to symfony/cache with installation.
Container PSR-11 compliant dependency injection container.
Convert Conversion utility to format dates, amounts, and more for display to the end-user.
Db The SQL database connection.
Debugger Debugger. See the Debugger page for details.
Dispatcher Dispatch messages to event listeners.
Emailer Send e-mail messages.
FilesystemAA Instance of the league/flysystem package. Defaults to the ~/storage/ directory of the local macheine, but can be changed to support AWS, et al.
Firebase Client to send Firebase messages to Android / iOS devices.
HttpClient PSR-18 compliant HTTP client. Defaults to the guzzlehttp package with installation.
Logger PSR-3 compliant logger. Defaults to the monolog/monolog package with installation.
Psr6Cache PSR-6 compliant cache. Defaults to the symfony/cache package with installation.
Queue Queue any task / crontab job for later processing.
SmsClient Client to send SMS messages via Nexmo.
View Syrus template engine to parse and render views.
WsClient Client to send messages to the Web Socket server.