| Server IP : 217.11.249.137 / Your IP : 216.73.216.54 Web Server : Apache System : FreeBSD triton.blueboard.cz 13.5-STABLE FreeBSD 13.5-STABLE stable/13-a3d32f9e6 GENERIC amd64 User : www ( 80) PHP Version : 8.0.30 Disable Function : ini_restore, show_source, socket_select, socket_create_listen, socket_create_pair, socket_listen, socket_strerror, shell_exec, proc_nice, proc_terminate, readlink, symlink, link, pfsocketopen, ini_alter, dl, pcntl_exec, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifsignaled, pcntl_wifstoped, pcntl_wifstopsig, pcntl_wtermsig, socket_accept, socket_bind, socket_create, socket_create_listen, popen, zlib_decode MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /data/www/24781/extramagazin_cz/www/wp-content/plugins/amp/src/Infrastructure/ |
Upload File : |
<?php
/**
* Interface Injector.
*
* @package AmpProject\AmpWP
*/
namespace AmpProject\AmpWP\Infrastructure;
/**
* The dependency injector should be the only piece of code doing actual
* instantiations, with the following exceptions:
* - Factories can instantiate directly.
* - Value objects should be instantiated directly where they are being used.
*
* Through technical features like "binding" interfaces to classes or
* "auto-wiring" to resolve all dependency of a class to be instantiated
* automatically, the dependency injector allows for the largest part of the
* code to adhere to the "Code against Interfaces, not Implementations"
* principle.
*
* Finally, the dependency injector should be the only one to decide what
* objects to "share" (always handing out the same instance) or not to share
* (always returning a fresh new instance on each subsequent call). This
* effectively gets rid of the dreaded Singletons.
*
* @since 2.0
* @internal
*/
interface Injector extends Service {
/**
* Make an object instance out of an interface or class.
*
* @param string $interface_or_class Interface or class to make an object
* instance out of.
* @param array $arguments Optional. Additional arguments to pass
* to the constructor. Defaults to an
* empty array.
* @return object Instantiated object.
*/
public function make( $interface_or_class, $arguments = [] );
/**
* Bind a given interface or class to an implementation.
*
* Note: The implementation can be an interface as well, as long as it can
* be resolved to an instantiatable class at runtime.
*
* @param string $from Interface or class to bind an implementation to.
* @param string $to Interface or class that provides the implementation.
* @return Injector
*/
public function bind( $from, $to );
/**
* Bind an argument for a class to a specific value.
*
* @param string $interface_or_class Interface or class to bind an argument
* for.
* @param string $argument_name Argument name to bind a value to.
* @param mixed $value Value to bind the argument to.
*
* @return Injector
*/
public function bind_argument(
$interface_or_class,
$argument_name,
$value
);
/**
* Always reuse and share the same instance for the provided interface or
* class.
*
* @param string $interface_or_class Interface or class to reuse.
* @return Injector
*/
public function share( $interface_or_class );
/**
* Delegate instantiation of an interface or class to a callable.
*
* @param string $interface_or_class Interface or class to delegate the
* instantiation of.
* @param callable $callable Callable to use for instantiation.
* @return Injector
*/
public function delegate( $interface_or_class, callable $callable );
}