1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11: namespace expect\configurator;
12:
13: use expect\config\ConfigurationLoader;
14: use expect\Configurator;
15: use expect\context\DefaultContextFactory;
16: use expect\factory\DefaultMatcherFactory;
17: use expect\registry\DefaultMatcherRegistry;
18:
19: 20: 21: 22: 23: 24: 25: 26:
27: class FileConfigurator implements Configurator
28: {
29: 30: 31:
32: private $config;
33:
34: 35: 36: 37: 38:
39: public function __construct($configFile)
40: {
41: $loader = new ConfigurationLoader();
42: $this->config = $loader->loadFromFile($configFile);
43: }
44:
45: 46: 47:
48: public function configure()
49: {
50: $registry = new DefaultMatcherRegistry();
51: $packages = $this->config->getMatcherRegistrars();
52:
53: foreach ($packages as $package) {
54: $package->registerTo($registry);
55: }
56:
57: $dictionary = $registry->toDictionary();
58: $matcherFactory = new DefaultMatcherFactory($dictionary);
59:
60: $resultReporter = $this->config->getResultReporter();
61:
62: return new DefaultContextFactory($matcherFactory, $resultReporter);
63: }
64: }
65: