-
-
Notifications
You must be signed in to change notification settings - Fork 138
/
Literal.php
48 lines (37 loc) · 853 Bytes
/
Literal.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
/**
* This file is part of the Nette Framework (https://nette.org)
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare(strict_types=1);
namespace Nette\PhpGenerator;
/**
* PHP literal value.
*/
class Literal
{
/**
* Creates a literal representing the creation of an object using the new operator.
*/
public static function new(string $class, array $args = []): self
{
return new self('new ' . $class . '(...?:)', [$args]);
}
public function __construct(
private string $value,
/** @var ?mixed[] */
private ?array $args = null,
) {
}
public function __toString(): string
{
return $this->formatWith(new Dumper);
}
/** @internal */
public function formatWith(Dumper $dumper): string
{
return $this->args === null
? $this->value
: $dumper->format($this->value, ...$this->args);
}
}