PHP Classes

File: src/Di/Traits/AppTrait.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   src/Di/Traits/AppTrait.php   Download  
File: src/Di/Traits/AppTrait.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Jaxon
Call PHP classes from JavaScript using AJAX
Author: By
Last change:
Date: 4 months ago
Size: 3,094 bytes
 

Contents

Class file image Download
<?php

namespace Jaxon\Di\Traits;

use
Jaxon\App\Ajax\App;
use
Jaxon\App\Ajax\AppInterface;
use
Jaxon\App\Ajax\Bootstrap;
use
Jaxon\App\Config\ConfigEventManager;
use
Jaxon\App\Config\ConfigManager;
use
Jaxon\App\I18n\Translator;
use
Jaxon\Config\ConfigReader;
use
Jaxon\Config\ConfigSetter;
use
Jaxon\Di\Container;
use
Jaxon\Request\Handler\CallbackManager;
use
Jaxon\Plugin\Manager\PackageManager;

trait
AppTrait
{
   
/**
     * @var string
     */
   
private $sJsLibVersion = 'jaxon_javascript_library_version';

   
/**
     * Register the values into the container
     *
     * @return void
     */
   
private function registerApp(): void
   
{
       
// Config Manager
       
$this->set(ConfigEventManager::class, function($di) {
            return new
ConfigEventManager($di->g(Container::class));
        });
       
$this->set(ConfigManager::class, function($di) {
           
$aDefaultOptions = require(__DIR__ . '/../../../config/lib.php');
            return new
ConfigManager($aDefaultOptions, $di->g(Translator::class),
               
$di->g(ConfigReader::class), $di->g(ConfigSetter::class),
               
$di->g(ConfigEventManager::class));
        });

       
// Jaxon App
       
$this->set(AppInterface::class, fn() => new App());
       
// Jaxon App bootstrap
       
$this->set(Bootstrap::class, function($di) {
            return new
Bootstrap($di->g(ConfigManager::class),
               
$di->g(PackageManager::class), $di->g(CallbackManager::class));
        });
       
// The javascript library version
       
$this->set($this->sJsLibVersion, function($di) {
           
$xRequest = $di->getRequest();
           
$aParams = $xRequest->getMethod() === 'POST' ?
               
$xRequest->getParsedBody() : $xRequest->getQueryParams();
            return
$aParams['jxnv'] ?? '3.3.0';
        });
    }

   
/**
     * Register the event handlers
     *
     * @return void
     */
   
private function setEventHandlers(): void
   
{
       
$xEventManager = $this->g(ConfigEventManager::class);
       
$xEventManager->addLibConfigListener(Translator::class);
    }

   
/**
     * Get the App instance
     *
     * @return AppInterface
     */
   
public function getApp(): AppInterface
   
{
        return
$this->g(AppInterface::class);
    }

   
/**
     * Get the App bootstrap
     *
     * @return Bootstrap
     */
   
public function getBootstrap(): Bootstrap
   
{
        return
$this->g(Bootstrap::class);
    }

   
/**
     * Get the config manager
     *
     * @return ConfigManager
     */
   
public function config(): ConfigManager
   
{
        return
$this->g(ConfigManager::class);
    }

   
/**
     * Get the javascript library version
     *
     * @return string
     */
   
public function getJsLibVersion(): string
   
{
        return
$this->g($this->sJsLibVersion);
    }

   
/**
     * Get the default request URI
     *
     * @return string
     */
   
public function getRequestUri(): string
   
{
        return
$this->config()->getOption('core.request.uri',
           
$this->getParameterReader()->uri());
    }
}