GivenFormBlock($sName); $oInput = new FormInput($sName, $sType); $oInput->SetOwnerBlock($oBlock); return $oInput; } /** * @throws FormBlockIOException */ public function GivenOutput(string $sName, string $sType = StringIOFormat::class): FormOutput { $oBlock = $this->GivenFormBlock($sName); $oOutput = new FormOutput($sName, $sType); $oOutput->SetOwnerBlock($oBlock); return $oOutput; } 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 GivenIORegister(AbstractFormBlock $oFormBlock): IORegister { $reflection = new ReflectionClass(AbstractFormBlock::class); $reflection_property = $reflection->getProperty('oIORegister'); $reflection_property->setAccessible(true); return $reflection_property->getValue($oFormBlock); } }