InputCatcher
Subsystém slouží k zachycení vstupních dat a především k jejich převedení na správnou hodnotu - tedy správný datový typ, případně objekt, či jejich escapování.
Subsystém byl dříve součástí subsystému formulářů, ale od poloviny roku 2026 se stal samostatným a plně samostatně použitelným subsystémem, stejně jako subsystém validátorů.
Ukázky použití
Samostatné použití zachytávačů
namespace JetApplication;
use Jet\Factory_InputCatcher;
use Jet\Http_Request;
use Jet\InputCatcher;
$catcher_date_time = Factory_InputCatcher::getInputCatcherInstance(
type: InputCatcher::TYPE_DATE_TIME,
name: 'date_and_time',
default_value: null
);
$catcher_date_time->catchInput( Http_Request::POST()->getRawData() );
$date_and_time = $catcher_date_time->getValue(); //Instance of Data_DateTime or null
$catcher_secure_string = Factory_InputCatcher::getInputCatcherInstance(
type: InputCatcher::TYPE_STRING,
name: 'secure_string',
default_value: ''
);
$catcher_secure_string->catchInput( Http_Request::POST()->getRawData() );
$secure_string = $catcher_secure_string->getValue(); //escaped string or empty string
Zachytávač namapovaný na třídu
Představte si situaci, kdy máte libovolná data v podobě asociativního pole (či instance Jet\Data_Array) a hodnoty z těchto surových dat potřebujete dostat do vlastností objektu. To je otravná práce, ale s PHP Jet to lze vyřešit elegantně například takto:
namespace JetApplication;
use Jet\Data_DateTime;
use Jet\Entity_InputCatcher_Definition;
use Jet\Entity_InputCatcher_Interface;
use Jet\Entity_InputCatcher_Trait;
use Jet\InputCatcher;
class ExampleClass implements Entity_InputCatcher_Interface
{
use Entity_InputCatcher_Trait;
#[Entity_InputCatcher_Definition(
type: InputCatcher::TYPE_DATE_TIME
)]
protected ?Data_DateTime $date_and_time = null;
#[Entity_InputCatcher_Definition(
type: InputCatcher::TYPE_STRING
)]
protected string $secure_string = '';
}
$example_object = new ExampleClass();
$config_data = require 'some/config/file.php';
$example_object->catchInput( $config_data );