public static function create(Modules $modules, Bindings $bindings, Singletons $singletons, CodeStorage $storage, Reflection $reflection) { $pointCuts = new PointCuts(); $jit = new JustInTimeBinder($bindings); $locator = new BindingLocator($bindings, $jit, $reflection); $moduleBinder = new ModuleBinder($bindings, $pointCuts); $configBinder = new ConfigBinder($bindings); $binder = new Binder($moduleBinder, $configBinder, $reflection); $builder = new BindingsBuilder($bindings, $modules, $binder, [new LateBindingVisitor($locator), new CircularProviderVisitor($bindings, $jit, $reflection), $marker = new SingletonMarkerVisitor(), new ConstantFoldingVisitor($bindings)], $singletons, $marker); $modulesAdapter = new ModulesAdapterFactory($builder, $singletons, $storage); $adapter = $modulesAdapter->get($modules); $singletons->setSize($adapter::SINGLETONS_SIZE); $aspect = AspectWeaver::create($modules, $storage, $reflection, $pointCuts, $singletons, $locator); return new FactoryFactory($modules, $locator, $builder, $storage, $reflection, $aspect); }
public function setSize($size) { parent::setSize($size - $this->super->getSize()); }