Init(); } /** * Initialize. * * @return void */ private function Init(): void { /** iterate throw dependents blocks... @var FormBlock $oDependentBlock */ foreach ($this->aDependentBlocks as $oDependentBlock) { /** iterate throw the block inputs connections... @var FormBinding $oBinding**/ foreach ($oDependentBlock->GetInputsBindings() as $sInputName => $oBinding) { // connection information $sOutputBlockName = $oBinding->oOutput->GetOwnerBlock()->GetName(); $sOutputName = $oBinding->oOutput->GetName(); // initialize map if (!isset($this->aDependenciesMap[$sOutputBlockName])) { $this->aDependenciesMap[$sOutputBlockName] = []; } if (!isset($this->aDependenciesMap[$sOutputBlockName][$sOutputName])) { $this->aDependenciesMap[$sOutputBlockName][$sOutputName] = []; } // add to map $this->aDependenciesMap[$sOutputBlockName][$sOutputName][] = $oBinding; } } } /** * @return array */ public function GetListenedBlockNames(): array { return array_keys($this->aDependenciesMap); } /** * @param string $sBlockName * * @return bool */ public function IsBlockHasOutputs(string $sBlockName): bool { return array_key_exists($sBlockName, $this->aDependenciesMap); } /** * @param string $sBlockName * * @return array */ public function GetOutputsForBlock(string $sBlockName): array { return array_keys($this->aDependenciesMap[$sBlockName]); } public function GetOutputsDependenciesForBlock(string $sOutputBlockName): array { return $this->aDependenciesMap[$sOutputBlockName]; } public function IsTheBlockInDependencies(string $sBlockName): bool { foreach ($this->aDependentBlocks as $oDependentBlock) { if($oDependentBlock->getName() === $sBlockName) { return true; } } return false; } }