CreatesPotentiallyTranslatedStrings.php
TLDR
This file is a trait called CreatesPotentiallyTranslatedStrings
. It has a single method pendingPotentiallyTranslatedString
which creates and returns an instance of the PotentiallyTranslatedString
class.
Methods
pendingPotentiallyTranslatedString
This method creates a pending potentially translated string. It takes two parameters - $attribute
(a string) and $message
(a nullable string). It returns an instance of the PotentiallyTranslatedString
class.
Classes
PotentiallyTranslatedString
This class is a subclass of PotentiallyTranslatedString
. It represents a potentially translated string. It has the following properties and methods:
-
protected $destructor
: A closure that is called when the object is destroyed. -
public function __construct($message, $translator, $destructor)
: The constructor method that initializes thePotentiallyTranslatedString
instance. It takes three parameters -$message
(a string),$translator
(an instance ofTranslator
), and$destructor
(a closure). -
public function __destruct()
: The destructor method that handles the object's destruction. It calls the$destructor
closure passing the string representation of the object.
END
<?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());
}
};
}
}