%PDF- %PDF-
Direktori : /var/www/pn/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ |
Current File : //var/www/pn/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinition.php |
<?php namespace WP_Rocket\Engine\Container\Definition; use ReflectionClass; class ClassDefinition extends AbstractDefinition implements ClassDefinitionInterface { /** * @var array */ protected $methods = []; /** * {@inheritdoc} */ public function withMethodCall($method, array $args = []) { $this->methods[] = [ 'method' => $method, 'arguments' => $args ]; return $this; } /** * {@inheritdoc} */ public function withMethodCalls(array $methods = []) { foreach ($methods as $method => $args) { $this->withMethodCall($method, $args); } return $this; } /** * {@inheritdoc} */ public function build(array $args = []) { $args = (empty($args)) ? $this->arguments : $args; $resolved = $this->resolveArguments($args); $reflection = new ReflectionClass($this->concrete); $instance = $reflection->newInstanceArgs($resolved); return $this->invokeMethods($instance); } /** * Invoke methods on resolved instance. * * @param object $instance * @return object */ protected function invokeMethods($instance) { foreach ($this->methods as $method) { $args = $this->resolveArguments($method['arguments']); call_user_func_array([$instance, $method['method']], $args); } return $instance; } }