mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #6666 from open-sausages/pulls/4.0/soft-autoload
BUG Prevent obsolete class cache breaking autoload
This commit is contained in:
commit
1f3f645106
@ -206,12 +206,14 @@ class ClassManifest
|
||||
{
|
||||
$name = strtolower($name);
|
||||
|
||||
if (isset($this->classes[$name])) {
|
||||
return $this->classes[$name];
|
||||
} elseif (isset($this->interfaces[$name])) {
|
||||
return $this->interfaces[$name];
|
||||
} elseif (isset($this->traits[$name])) {
|
||||
return $this->traits[$name];
|
||||
foreach ([
|
||||
$this->classes,
|
||||
$this->interfaces,
|
||||
$this->traits
|
||||
] as $source) {
|
||||
if (isset($source[$name]) && file_exists($source[$name])) {
|
||||
return $source[$name];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -381,15 +383,6 @@ class ClassManifest
|
||||
return array_shift($parts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to set up files that we want to exclude from parsing for performance reasons.
|
||||
*/
|
||||
protected function setDefaults()
|
||||
{
|
||||
$this->classes['sstemplateparser'] = FRAMEWORK_PATH.'/src/View/SSTemplateParser.php';
|
||||
$this->classes['sstemplateparseexception'] = FRAMEWORK_PATH.'/src/View/SSTemplateParseException.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Completely regenerates the manifest file.
|
||||
*
|
||||
@ -407,12 +400,10 @@ class ClassManifest
|
||||
$this->$reset = array();
|
||||
}
|
||||
|
||||
$this->setDefaults();
|
||||
|
||||
$finder = new ManifestFileFinder();
|
||||
$finder->setOptions(array(
|
||||
'name_regex' => '/^(_config.php|[^_].*\.php)$/',
|
||||
'ignore_files' => array('index.php', 'main.php', 'cli-script.php', 'SSTemplateParser.php'),
|
||||
'name_regex' => '/^((_config)|([^_].*))\\.php$/',
|
||||
'ignore_files' => array('index.php', 'main.php', 'cli-script.php'),
|
||||
'ignore_tests' => !$this->tests,
|
||||
'file_callback' => array($this, 'handleFile'),
|
||||
'dir_callback' => array($this, 'handleDir')
|
||||
|
@ -50,8 +50,6 @@ class ClassManifestTest extends SapphireTest
|
||||
'classc' => "{$this->base}/module/classes/ClassC.php",
|
||||
'classd' => "{$this->base}/module/classes/ClassD.php",
|
||||
'classe' => "{$this->base}/module/classes/ClassE.php",
|
||||
'sstemplateparser' => FRAMEWORK_PATH."/src/View/SSTemplateParser.php",
|
||||
'sstemplateparseexception' => FRAMEWORK_PATH."/src/View/SSTemplateParseException.php"
|
||||
);
|
||||
$this->assertEquals($expect, $this->manifest->getClasses());
|
||||
}
|
||||
@ -59,7 +57,7 @@ class ClassManifestTest extends SapphireTest
|
||||
public function testGetClassNames()
|
||||
{
|
||||
$this->assertEquals(
|
||||
array('sstemplateparser', 'sstemplateparseexception', 'classa', 'classb', 'classc', 'classd', 'classe'),
|
||||
['classa', 'classb', 'classc', 'classd', 'classe'],
|
||||
$this->manifest->getClassNames()
|
||||
);
|
||||
}
|
||||
|
@ -263,8 +263,6 @@ class NamespacedClassManifestTest extends SapphireTest
|
||||
'silverstripe\test\classf' => "{$this->base}/module/classes/ClassF.php",
|
||||
'silverstripe\test\classg' => "{$this->base}/module/classes/ClassG.php",
|
||||
'silverstripe\test\classh' => "{$this->base}/module/classes/ClassH.php",
|
||||
'sstemplateparser' => FRAMEWORK_PATH."/src/View/SSTemplateParser.php",
|
||||
'sstemplateparseexception' => FRAMEWORK_PATH."/src/View/SSTemplateParseException.php",
|
||||
'silverstripe\framework\tests\classi' => "{$this->base}/module/classes/ClassI.php",
|
||||
);
|
||||
|
||||
@ -274,7 +272,7 @@ class NamespacedClassManifestTest extends SapphireTest
|
||||
public function testGetClassNames()
|
||||
{
|
||||
$this->assertEquals(
|
||||
array('sstemplateparser', 'sstemplateparseexception', 'silverstripe\test\classa',
|
||||
array('silverstripe\test\classa',
|
||||
'silverstripe\test\classb', 'silverstripe\test\classc', 'silverstripe\test\classd',
|
||||
'silverstripe\test\classe', 'silverstripe\test\classf', 'silverstripe\test\classg',
|
||||
'silverstripe\test\classh', 'silverstripe\framework\tests\classi'),
|
||||
|
Loading…
Reference in New Issue
Block a user