55 lines
1.6 KiB
PHP
55 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Translation;
|
|
|
|
trait CreatesPotentiallyTranslatedStrings
|
|
{
|
|
/**
|
|
* Create a pending potentially translated string.
|
|
*
|
|
* @param string $attribute
|
|
* @param string|null $message
|
|
* @return \Illuminate\Translation\PotentiallyTranslatedString
|
|
*/
|
|
protected function pendingPotentiallyTranslatedString($attribute, $message)
|
|
{
|
|
$destructor = $message === null
|
|
? fn ($message) => $this->messages[] = $message
|
|
: fn ($message) => $this->messages[$attribute] = $message;
|
|
|
|
return new class($message ?? $attribute, $this->validator->getTranslator(), $destructor) extends PotentiallyTranslatedString
|
|
{
|
|
/**
|
|
* The callback to call when the object destructs.
|
|
*
|
|
* @var \Closure
|
|
*/
|
|
protected $destructor;
|
|
|
|
/**
|
|
* Create a new pending potentially translated string.
|
|
*
|
|
* @param string $message
|
|
* @param \Illuminate\Contracts\Translation\Translator $translator
|
|
* @param \Closure $destructor
|
|
*/
|
|
public function __construct($message, $translator, $destructor)
|
|
{
|
|
parent::__construct($message, $translator);
|
|
|
|
$this->destructor = $destructor;
|
|
}
|
|
|
|
/**
|
|
* Handle the object's destruction.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __destruct()
|
|
{
|
|
($this->destructor)($this->toString());
|
|
}
|
|
};
|
|
}
|
|
}
|