From 118af06c3fbe5653d9e4be359c3db34a34867d4d Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Thu, 19 May 2016 12:47:29 +0100 Subject: [PATCH] Efficiency improvement to class manifest --- core/manifest/ClassManifest.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/core/manifest/ClassManifest.php b/core/manifest/ClassManifest.php index 071d0aae3..b67bf501d 100644 --- a/core/manifest/ClassManifest.php +++ b/core/manifest/ClassManifest.php @@ -249,14 +249,14 @@ class SS_ClassManifest { /** * Returns an array of module names mapped to their paths. * - * "Modules" in SilverStripe are simply directories with a _config.php + * "Modules" in SilverStripe are simply directories with a _config.php * file. * * @return array */ public function getModules() { $modules = array(); - + if($this->configs) { foreach($this->configs as $configPath) { $modules[basename(dirname($configPath))] = dirname($configPath); @@ -347,8 +347,7 @@ class SS_ClassManifest { // files will have changed and TokenisedRegularExpression is quite // slow. A combination of the file name and file contents hash are used, // since just using the datetime lead to problems with upgrading. - $file = file_get_contents($pathname); - $key = preg_replace('/[^a-zA-Z0-9_]/', '_', $basename) . '_' . md5($file); + $key = preg_replace('/[^a-zA-Z0-9_]/', '_', $basename) . '_' . md5_file($pathname); if ($data = $this->cache->load($key)) { $valid = ( @@ -364,8 +363,8 @@ class SS_ClassManifest { } if (!$classes) { - $tokens = token_get_all($file); - + $tokens = token_get_all(file_get_contents($pathname)); + $classes = self::get_namespaced_class_parser()->findAll($tokens); $namespace = self::get_namespace_parser()->findAll($tokens); if($namespace) {