Skip to content
Snippets Groups Projects
Select Git revision
  • 922feaedbdae60833b6c696eb21ada653a7405a4
  • main default protected
  • step-3263
  • feature/plugins-cli
  • feature/vite
  • step-2484-peerreview
  • biest/issue-5051
  • tests/simplify-jsonapi-tests
  • fix/typo-in-1a70031
  • feature/broadcasting
  • database-seeders-and-factories
  • feature/peer-review-2
  • feature-feedback-jsonapi
  • feature/peerreview
  • feature/balloon-plus
  • feature/stock-images-unsplash
  • tic-2588
  • 5.0
  • 5.2
  • biest/unlock-blocks
  • biest-1514
21 results

DIContainer.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    DIContainer.php 1.82 KiB
    <?php
    
    namespace Studip;
    
    use DI\ContainerBuilder;
    use Psr\Container\ContainerInterface;
    
    class DIContainer
    {
        /**
         * The current globally available container.
         *
         * @var static
         */
        protected static $instance;
    
        /**
         * Get the globally available instance of the container.
         *
         * @return ContainerInterface
         */
        public static function getInstance()
        {
            if (is_null(static::$instance)) {
                $builder = static::createBuilder();
                static::$instance = $builder->build();
            }
    
            return static::$instance;
        }
    
        /**
         * Set the instance of the container.
         *
         * @param  \Psr\Container\ContainerInterface|null  $container
         * @return \Psr\Container\ContainerInterface|static
         */
        public static function setInstance(ContainerInterface $container = null)
        {
            return static::$instance = $container;
        }
    
        /**
         * Set up the ContainerBuilder.
         */
        protected static function createBuilder(): ContainerBuilder
        {
            $builder = new ContainerBuilder();
            if (\Studip\ENV == 'production') {
                $builder->enableCompilation(
                    self::getCompilationPath(),
                    self::getCompilationClass()
                );
            }
            $builder->ignorePhpDocErrors(true);
            $builder->addDefinitions('lib/bootstrap-definitions.php');
    
            $jsonapiSettings = require 'lib/classes/JsonApi/settings.php';
            $jsonapiSettings($builder);
    
            $jsonapiDependencies = require 'lib/classes/JsonApi/dependencies.php';
            $jsonapiDependencies($builder);
    
            return $builder;
        }
    
        public static function getCompilationPath(): string
        {
            return $GLOBALS['TMP_PATH'];
        }
    
        public static function getCompilationClass(): string
        {
            return 'CompiledContainer';
        }
    }