mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Merge branch '3.7' into 3
This commit is contained in:
commit
3f46f2d27e
@ -866,7 +866,7 @@ class Injector {
|
|||||||
return $this->instantiate($spec, $name);
|
return $this->instantiate($spec, $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->instantiate($spec);
|
return $this->instantiate($spec, null, 'prototype');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -908,6 +908,10 @@ abstract class SS_Object {
|
|||||||
$methods = $this->findMethodsFromExtension($extension);
|
$methods = $this->findMethodsFromExtension($extension);
|
||||||
if ($methods) {
|
if ($methods) {
|
||||||
foreach ($methods as $method) {
|
foreach ($methods as $method) {
|
||||||
|
if (!isset(self::$extra_methods[$this->class][$method])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$methodInfo = self::$extra_methods[$this->class][$method];
|
$methodInfo = self::$extra_methods[$this->class][$method];
|
||||||
|
|
||||||
if ($methodInfo['property'] === $property && $methodInfo['index'] === $index) {
|
if ($methodInfo['property'] === $property && $methodInfo['index'] === $index) {
|
||||||
|
@ -446,7 +446,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
|
|||||||
|
|
||||||
// Build a list of suffixes whose tables need versioning
|
// Build a list of suffixes whose tables need versioning
|
||||||
$allSuffixes = array();
|
$allSuffixes = array();
|
||||||
$versionableExtensions = $this->owner->config()->versionableExtensions;
|
$versionableExtensions = (array)$this->owner->config()->versionableExtensions;
|
||||||
if(count($versionableExtensions)){
|
if(count($versionableExtensions)){
|
||||||
|
|
||||||
foreach ($versionableExtensions as $versionableExtension => $suffixes) {
|
foreach ($versionableExtensions as $versionableExtension => $suffixes) {
|
||||||
@ -936,7 +936,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function extendWithSuffix($table) {
|
public function extendWithSuffix($table) {
|
||||||
$versionableExtensions = $this->owner->config()->versionableExtensions;
|
$versionableExtensions = (array)$this->owner->config()->versionableExtensions;
|
||||||
|
|
||||||
if(count($versionableExtensions)){
|
if(count($versionableExtensions)){
|
||||||
foreach ($versionableExtensions as $versionableExtension => $suffixes) {
|
foreach ($versionableExtensions as $versionableExtension => $suffixes) {
|
||||||
|
@ -39,6 +39,13 @@ class DataObjectTest extends SapphireTest {
|
|||||||
*/
|
*/
|
||||||
public function testSingleton($inst, $defaultValue, $altDefaultValue)
|
public function testSingleton($inst, $defaultValue, $altDefaultValue)
|
||||||
{
|
{
|
||||||
|
// Calls to scaffold the test database may have cached service specs for DataObjects
|
||||||
|
// with the incorrect 'type' set (singleton instead of prototype)
|
||||||
|
Injector::nest();
|
||||||
|
$reflectionProp = new ReflectionProperty('Injector', 'specs');
|
||||||
|
$reflectionProp->setAccessible(true);
|
||||||
|
$reflectionProp->setValue(Injector::inst(), array());
|
||||||
|
|
||||||
$inst = $inst();
|
$inst = $inst();
|
||||||
// Test that populateDefaults() isn't called on singletons
|
// Test that populateDefaults() isn't called on singletons
|
||||||
// which can lead to SQL errors during build, and endless loops
|
// which can lead to SQL errors during build, and endless loops
|
||||||
@ -53,6 +60,8 @@ class DataObjectTest extends SapphireTest {
|
|||||||
} else {
|
} else {
|
||||||
$this->assertEmpty($inst->MyFieldWithAltDefault);
|
$this->assertEmpty($inst->MyFieldWithAltDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Injector::unnest();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function provideSingletons()
|
public function provideSingletons()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user