68 lines
1.6 KiB
PHP
68 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of Twig.
|
||
|
*
|
||
|
* (c) Fabien Potencier
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace Twig;
|
||
|
|
||
|
/**
|
||
|
* @author Fabien Potencier <fabien@symfony.com>
|
||
|
*/
|
||
|
final class DeprecatedCallableInfo
|
||
|
{
|
||
|
private string $type;
|
||
|
private string $name;
|
||
|
|
||
|
public function __construct(
|
||
|
private string $package,
|
||
|
private string $version,
|
||
|
private ?string $altName = null,
|
||
|
private ?string $altPackage = null,
|
||
|
private ?string $altVersion = null,
|
||
|
) {
|
||
|
}
|
||
|
|
||
|
public function setType(string $type): void
|
||
|
{
|
||
|
$this->type = $type;
|
||
|
}
|
||
|
|
||
|
public function setName(string $name): void
|
||
|
{
|
||
|
$this->name = $name;
|
||
|
}
|
||
|
|
||
|
public function triggerDeprecation(?string $file = null, ?int $line = null): void
|
||
|
{
|
||
|
$message = \sprintf('Twig %s "%s" is deprecated', ucfirst($this->type), $this->name);
|
||
|
|
||
|
if ($this->altName) {
|
||
|
$message .= \sprintf('; use "%s"', $this->altName);
|
||
|
if ($this->altPackage) {
|
||
|
$message .= \sprintf(' from the "%s" package', $this->altPackage);
|
||
|
}
|
||
|
if ($this->altVersion) {
|
||
|
$message .= \sprintf(' (available since version %s)', $this->altVersion);
|
||
|
}
|
||
|
$message .= ' instead';
|
||
|
}
|
||
|
|
||
|
if ($file) {
|
||
|
$message .= \sprintf(' in %s', $file);
|
||
|
if ($line) {
|
||
|
$message .= \sprintf(' at line %d', $line);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$message .= '.';
|
||
|
|
||
|
trigger_deprecation($this->package, $this->version, $message);
|
||
|
}
|
||
|
}
|