PluginProbe
Packeta / trunk
Packeta vtrunk
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / deps / nette / di / src / DI / Definitions / Statement.php

Statement.php in Packeta trunk, at deps/nette/di/src/DI/Definitions/Statement.php

52 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * This file is part of the Nette Framework (https://nette.org)
5 * Copyright (c) 2004 David Grudl (https://davidgrudl.com)
6 */
7 declare (strict_types=1);
8 namespace Packetery\Nette\DI\Definitions;
9
10 use Packetery\Nette;
11 use Packetery\Nette\Utils\Strings;
12 /**
13 * Assignment or calling statement.
14 *
15 * @property string|array|Definition|Reference|null $entity
16 */
17 final class Statement implements \Packetery\Nette\Schema\DynamicParameter
18 {
19 use \Packetery\Nette\SmartObject;
20 /** @var array */
21 public $arguments;
22 /** @var string|array|Definition|Reference|null */
23 private $entity;
24 /**
25 * @param string|array|Definition|Reference|null $entity
26 */
27 public function __construct($entity, array $arguments = [])
28 {
29 if ($entity !== null && !\is_string($entity) && !$entity instanceof Definition && !$entity instanceof Reference && !(\is_array($entity) && \array_keys($entity) === [0, 1] && (\is_string($entity[0]) || $entity[0] instanceof self || $entity[0] instanceof Reference || $entity[0] instanceof Definition))) {
30 throw new \Packetery\Nette\InvalidArgumentException('Argument is not valid Statement entity.');
31 }
32 // normalize Class::method to [Class, method]
33 if (\is_string($entity) && Strings::contains($entity, '::') && !Strings::contains($entity, '?')) {
34 $entity = \explode('::', $entity, 2);
35 }
36 if (\is_string($entity) && \substr($entity, 0, 1) === '@') {
37 // normalize @service to Reference
38 $entity = new Reference(\substr($entity, 1));
39 } elseif (\is_array($entity) && \is_string($entity[0]) && \substr($entity[0], 0, 1) === '@') {
40 $entity[0] = new Reference(\substr($entity[0], 1));
41 }
42 $this->entity = $entity;
43 $this->arguments = $arguments;
44 }
45 /** @return string|array|Definition|Reference|null */
46 public function getEntity()
47 {
48 return $this->entity;
49 }
50 }
51 \class_exists(\Packetery\Nette\DI\Statement::class);
52