GivenFormBlock($sName.'_block'); return new FormInput($sName.'_input', $sType, $oBlock); } public function GivenOutput(string $sName, string $sType = StringIOFormat::class): FormOutput { $oBlock = $this->GivenFormBlock($sName.'_block'); return new FormOutput($sName.'_output', $sType, $oBlock); } public function GivenFormBlock(string $sName): FormBlock { return new FormBlock($sName, []); } public function GivenSubFormBlock(FormBlock $oParent, string $sName, string $ssBlockClass = FormBlock::class): AbstractFormBlock { $oParent->Add($sName, $ssBlockClass, []); return $oParent->Get($sName); } public function GetIORegister(AbstractFormBlock $oFormBlock): IORegister { $reflection = new ReflectionClass(AbstractFormBlock::class); $reflection_property = $reflection->getProperty('oIORegister'); $reflection_property->setAccessible(true); return $reflection_property->getValue($oFormBlock); } }