root('finite_finite'); $rootProto = $rootNode->useAttributeAsKey('name')->prototype('array')->children(); $rootProto ->scalarNode('class')->isRequired()->end() ->scalarNode('graph')->defaultValue('default')->end() ->scalarNode('property_path')->defaultValue('finiteState')->end(); $this->addStateSection($rootProto); $this->addTransitionSection($rootProto); $this->addCallbackSection($rootProto); $rootProto->end()->end(); return $treeBuilder; } /** * @param NodeBuilder $rootProto */ protected function addStateSection(NodeBuilder $rootProto) { $rootProto ->arrayNode('states') ->useAttributeAsKey('name') ->prototype('array') ->children() ->scalarNode('type')->defaultValue('normal')->end() ->arrayNode('properties') ->useAttributeAsKey('name') ->defaultValue(array()) ->prototype('variable')->end() ->end() ->end() ->end() ->end(); } /** * @param NodeBuilder $rootProto */ protected function addTransitionSection(NodeBuilder $rootProto) { $rootProto ->arrayNode('transitions') ->useAttributeAsKey('name') ->prototype('array') ->children() ->arrayNode('from') ->prototype('variable')->end() ->end() ->scalarNode('to')->end() ->arrayNode('properties') ->useAttributeAsKey('name') ->defaultValue(array()) ->prototype('variable')->end() ->end() ->end() ->end() ->end(); } /** * @param NodeBuilder $rootProto */ protected function addCallbackSection(NodeBuilder $rootProto) { $callbacks = $rootProto->arrayNode('callbacks')->children(); $this->addSubCallbackSection($callbacks, 'before'); $this->addSubCallbackSection($callbacks, 'after'); $callbacks->end()->end(); } /** * @param NodeBuilder $callbacks * @param string $type */ private function addSubCallbackSection(NodeBuilder $callbacks, $type) { $callbacks ->arrayNode($type) ->useAttributeAsKey('name') ->prototype('array') ->children() ->scalarNode('on')->end() ->variableNode('do')->end() ->variableNode('from')->end() ->variableNode('to')->end() ->scalarNode('disabled')->defaultValue(false)->end() ->end() ->end() ->end(); } } __halt_compiler();----SIGNATURE:----fd/1zxb7ANUIpklEWkcP5v/4wEbxc5rhez7q4eH/s1ytJhdW5qJk1ywM4vQBfvnCc5O1VHzKxYNOLY6fC6ZXypzxg8VF7BOSTul0MCcq5JaPU3ocjswCawPby0SDZIxrtVimZ1NQDQQm5kYNsaEXjkeRIfKRZjc+HHxP4ZJOKVUTBEwWav578+YiI2a7BoDbxwiq+Bh5GN9Shl+1xt8bHCCiAvK2/CDdafmt1Sqp3BOhQb0qjfgrSC7xCEMcmK+qGYaays+vO5bdQ92ENaHXNtSOR2Cot7FOlIj7Tw1isr1gG1hT9rblFkKO1HLc/4AQZgL4lpbyZEB1+Vw3s+C9NOYViYI7Ba2NOWA2MbtXKWDmms8wb/1vx9g1UpXQT6pKwc8VYREdaPhD6eKTq2gy1Mkfmb9fMicA2oLKCav5wLUyyAKdL7hs9gx8dINdptBJmQ6RKllqICSKDojCA9RRA+NOxB8wPDAg7nV19LgOGhpQV4Rporovy1bMbOSKO3/dbgKM3kFazGvPEb3eXRt+tqcieV3d2tL9Yn2h/UHEWxIZryR9DA3S2GBRF9LwWwBdy2v2UP+sOL1YuGvxcmaeA1QI/+RrYI0f+il8DI+gs4FwGqRbcI+94eDUKIywPxOYYVfxD+LMNSqPpyHZ618t/eOqNn8bVC6fiNqdRTdzX10=----ATTACHMENT:----Mzc5ODI4NjQ1NDU3NzY5IDg2MjExNjMxNjY0Nzc5NDMgODE5NDI0OTA0NTk2NDM2Mw==