1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 
<?php
/* --------------------------------------------------------------
   StaticGXCoreLoader.inc.php 2018-02-22
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2018 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/


/**
 * Class StaticGXCoreLoader
 *
 * This class is for static use only.
 * Usage example: $customerService = StaticGXCoreLoader::getService('Customer');
 *
 * @category    System
 * @package     Loaders
 * @subpackage  GXCoreLoader
 */
class StaticGXCoreLoader
{
    /**
     * GXCoreLoader Instance
     *
     * @var GXCoreLoaderInterface
     */
    protected static $gxCoreLoader;
    
    
    /**
     * Class Constructor
     *
     * @throws BadFunctionCallException
     */
    public function __construct()
    {
        throw new BadFunctionCallException('This class is for static use only.');
    }
    
    
    /**
     * Get a service object instance.
     *
     * @param string $serviceName
     *
     * @return object
     */
    public static function getService($serviceName)
    {
        $gxCoreLoader = self::_getGXCoreLoader();
        $service      = $gxCoreLoader->getService($serviceName);
        
        return $service;
    }
    
    
    /**
     * Method depends on CodeIgniter database library.
     *
     * @return CI_DB_query_builder
     */
    public static function getDatabaseQueryBuilder()
    {
        $gxCoreLoader         = self::_getGXCoreLoader();
        $databaseQueryBuilder = $gxCoreLoader->getDatabaseQueryBuilder();
        
        return $databaseQueryBuilder;
    }
    
    
    /**
     * Method depends on PHP DebugBar library.
     *
     * @return DebugBar
     */
    public static function getDebugBar()
    {
        $gxCoreLoader     = self::_getGXCoreLoader();
        $standardDebugBar = $gxCoreLoader->getDebugBar();
        
        return $standardDebugBar;
    }
    
    
    /**
     * Method depends on PHP DebugBar library.
     *
     * @return array
     */
    public static function getDebugBarAssets()
    {
        $gxCoreLoader   = self::_getGXCoreLoader();
        $debugBarAssets = $gxCoreLoader->getDebugBarAssets();
        
        return $debugBarAssets;
    }
    
    
    /**
     * Method depends on CodeIgniter database library.
     *
     * @return CI_DB_utility
     */
    public static function getDatabaseUtilityHelper()
    {
        $gxCoreLoader          = self::_getGXCoreLoader();
        $databaseUtilityHelper = $gxCoreLoader->getDatabaseUtilityHelper();
        
        return $databaseUtilityHelper;
    }
    
    
    /**
     * Method depends on CodeIgniter database library.
     *
     * @return CI_DB_forge
     */
    public static function getDatabaseForgeHelper()
    {
        $gxCoreLoader        = self::_getGXCoreLoader();
        $databaseForgeHelper = $gxCoreLoader->getDatabaseForgeHelper();
        
        return $databaseForgeHelper;
    }
    
    /**
     * Get GX Core Loader object instance.
     *
     * @return GXCoreLoaderInterface
     */
    protected static function _getGXCoreLoader()
    {
        if(self::$gxCoreLoader === null)
        {
            $gxCoreLoaderSettings = MainFactory::create('GXCoreLoaderSettings');
            self::$gxCoreLoader   = MainFactory::create('GXCoreLoader', $gxCoreLoaderSettings);
        }
        
        return self::$gxCoreLoader;
    }
}