Skip to content
Snippets Groups Projects
Select Git revision
  • f9cd6fd429677e6d71171c34abc7e08a090c598e
  • master default protected
  • fix/deprecated_functions
  • devel
  • feat/translations
  • feat/upgrade_to_pro_url
  • feat/lang
  • bugfix/require-interface
  • bugfix/require-once-error
  • feature/activation-hooks
  • feature/template-loader
  • feature/template-renderer
  • feature/plugin-activation
  • feature/hookable-object
  • feature/builder-pattern
  • 2.1.2
  • 2.1.1
  • 2.1.0
  • 2.0.0
  • 2.0.0-beta1
  • 1.4.4
  • 1.4.3
  • 1.4.2
  • 1.4.1
  • 1.4
  • 1.3.3
  • 1.3.2
  • 1.3.1
  • 1.3.0
  • 1.2.0
  • 1.1
  • 1.0
32 results

BasicTemplateLoader.php

Blame
  • di-functions.php 4.44 KiB
    <?php
    /**
     * This is a vendored set of php-di/php-di helper functions. We place it directly in our library to improve experience when using DI along with code scoping, which defy composer's file autoloading.
     *
     * @see https://github.com/PHP-DI/PHP-DI/blob/master/src/functions.php
     */
    
    declare(strict_types=1);
    
    namespace WPDesk\Init\DI;
    
    use DI\Definition\ArrayDefinitionExtension;
    use DI\Definition\EnvironmentVariableDefinition;
    use DI\Definition\Helper\AutowireDefinitionHelper;
    use DI\Definition\Helper\CreateDefinitionHelper;
    use DI\Definition\Helper\FactoryDefinitionHelper;
    use DI\Definition\Reference;
    use DI\Definition\StringDefinition;
    use DI\Definition\ValueDefinition;
    
    if ( ! function_exists( 'WPDesk\Init\DI\value' ) ) {
    	/**
    	 * Helper for defining a value.
    	 */
    	function value( mixed $value ): ValueDefinition {
    		return new ValueDefinition( $value );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\create' ) ) {
    	/**
    	 * Helper for defining an object.
    	 *
    	 * @param string|null $className Class name of the object.
    	 *                               If null, the name of the entry (in the container) will be used as class name.
    	 */
    	function create( ?string $className = null ): CreateDefinitionHelper {
    		return new CreateDefinitionHelper( $className );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\autowire' ) ) {
    	/**
    	 * Helper for autowiring an object.
    	 *
    	 * @param string|null $className Class name of the object.
    	 *                               If null, the name of the entry (in the container) will be used as class name.
    	 */
    	function autowire( ?string $className = null ): AutowireDefinitionHelper {
    		return new AutowireDefinitionHelper( $className );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\factory' ) ) {
    	/**
    	 * Helper for defining a container entry using a factory function/callable.
    	 *
    	 * @param callable|array|string $factory The factory is a callable that takes the container as parameter
    	 *        and returns the value to register in the container.
    	 */
    	function factory( callable|array|string $factory ): FactoryDefinitionHelper {
    		return new FactoryDefinitionHelper( $factory );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\decorate' ) ) {
    	/**
    	 * Decorate the previous definition using a callable.
    	 *
    	 * Example:
    	 *
    	 *     'foo' => decorate(function ($foo, $container) {
    	 *         return new CachedFoo($foo, $container->get('cache'));
    	 *     })
    	 *
    	 * @param callable $callable The callable takes the decorated object as first parameter and
    	 *                           the container as second.
    	 */
    	function decorate( callable|array|string $callable ): FactoryDefinitionHelper {
    		return new FactoryDefinitionHelper( $callable, true );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\get' ) ) {
    	/**
    	 * Helper for referencing another container entry in an object definition.
    	 */
    	function get( string $entryName ): Reference {
    		return new Reference( $entryName );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\env' ) ) {
    	/**
    	 * Helper for referencing environment variables.
    	 *
    	 * @param string $variableName The name of the environment variable.
    	 * @param mixed $defaultValue The default value to be used if the environment variable is not defined.
    	 */
    	function env( string $variableName, mixed $defaultValue = null ): EnvironmentVariableDefinition {
    		// Only mark as optional if the default value was *explicitly* provided.
    		$isOptional = 2 === func_num_args();
    
    		return new EnvironmentVariableDefinition( $variableName, $isOptional, $defaultValue );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\add' ) ) {
    	/**
    	 * Helper for extending another definition.
    	 *
    	 * Example:
    	 *
    	 *     'log.backends' => DI\add(DI\get('My\Custom\LogBackend'))
    	 *
    	 * or:
    	 *
    	 *     'log.backends' => DI\add([
    	 *         DI\get('My\Custom\LogBackend')
    	 *     ])
    	 *
    	 * @param mixed|array $values A value or an array of values to add to the array.
    	 *
    	 * @since 5.0
    	 */
    	function add( $values ): ArrayDefinitionExtension {
    		if ( ! is_array( $values ) ) {
    			$values = [ $values ];
    		}
    
    		return new ArrayDefinitionExtension( $values );
    	}
    }
    
    if ( ! function_exists( 'WPDesk\Init\DI\string' ) ) {
    	/**
    	 * Helper for concatenating strings.
    	 *
    	 * Example:
    	 *
    	 *     'log.filename' => DI\string('{app.path}/app.log')
    	 *
    	 * @param string $expression A string expression. Use the `{}` placeholders to reference other container entries.
    	 *
    	 * @since 5.0
    	 */
    	function string( string $expression ): StringDefinition {
    		return new StringDefinition( $expression );
    	}
    }