/** * Get a global version number, which changes whenever any atom or atomizer * implementation changes in a way which is not backward-compatible. */ private function getDivinerAtomWorldVersion() { $version = array(); $version['atom'] = DivinerAtom::getAtomSerializationVersion(); $version['rules'] = $this->getRules(); $atomizers = id(new PhutilSymbolLoader())->setAncestorClass('DivinerAtomizer')->setConcreteOnly(true)->selectAndLoadSymbols(); $atomizer_versions = array(); foreach ($atomizers as $atomizer) { $atomizer_versions[$atomizer['name']] = call_user_func(array($atomizer['name'], 'getAtomizerVersion')); } ksort($atomizer_versions); $version['atomizers'] = $atomizer_versions; return md5(serialize($version)); }
/** * Get a global version number, which changes whenever any atom or atomizer * implementation changes in a way which is not backward-compatible. */ private function getDivinerAtomWorldVersion() { $version = array(); $version['atom'] = DivinerAtom::getAtomSerializationVersion(); $version['rules'] = $this->getRules(); $atomizers = id(new PhutilClassMapQuery())->setAncestorClass('DivinerAtomizer')->execute(); $atomizer_versions = array(); foreach ($atomizers as $atomizer) { $name = get_class($atomizer); $atomizer_versions[$name] = call_user_func(array($name, 'getAtomizerVersion')); } ksort($atomizer_versions); $version['atomizers'] = $atomizer_versions; return md5(serialize($version)); }