mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #5175 from Firesphere/pulls/feature-set-owner-allmethods
Enhancement: Set the owner on an extension
This commit is contained in:
commit
78f19bd2ed
@ -816,7 +816,9 @@ abstract class Object {
|
||||
}
|
||||
|
||||
if(method_exists($extension, 'allMethodNames')) {
|
||||
if ($extension instanceof Extension) $extension->setOwner($this);
|
||||
$methods = $extension->allMethodNames(true);
|
||||
if ($extension instanceof Extension) $extension->clearOwner();
|
||||
|
||||
} else {
|
||||
if(!isset(self::$built_in_methods[$extension->class])) {
|
||||
|
@ -166,6 +166,13 @@ class DataExtensionTest extends SapphireTest {
|
||||
$this->assertEquals("hello world", $do->testMethodApplied());
|
||||
}
|
||||
|
||||
public function testExtensionAllMethodNamesHasOwner() {
|
||||
/** @var DataExtensionTest_MyObject $do */
|
||||
$do = DataExtensionTest_MyObject::create();
|
||||
|
||||
$this->assertTrue($do->hasMethod('getTestValueWithDataExtensionTest_MyObject'));
|
||||
}
|
||||
|
||||
public function testPageFieldGeneration() {
|
||||
$page = new DataExtensionTest_CMSFieldsBase();
|
||||
$fields = $page->getCMSFields();
|
||||
@ -365,17 +372,31 @@ class DataExtensionTest_Faves extends DataExtension implements TestOnly {
|
||||
|
||||
}
|
||||
|
||||
class DataExtensionTest_AppliedToDO extends DataExtension implements TestOnly {
|
||||
class DataExtensionTest_AppliedToDO extends DataExtension implements TestOnly
|
||||
{
|
||||
|
||||
public function testMethodApplied() {
|
||||
public function testMethodApplied()
|
||||
{
|
||||
return "hello world";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class DataExtensionTest_AllMethodNames extends DataExtension implements TestOnly
|
||||
{
|
||||
public function allMethodNames()
|
||||
{
|
||||
return array(
|
||||
strtolower('getTestValueWith'.$this->owner->ClassName)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
DataExtensionTest_MyObject::add_extension('DataExtensionTest_Ext1');
|
||||
DataExtensionTest_MyObject::add_extension('DataExtensionTest_Ext2');
|
||||
DataExtensionTest_MyObject::add_extension('DataExtensionTest_Faves');
|
||||
DataExtensionTest_MyObject::add_extension('DataExtensionTest_AllMethodNames');
|
||||
|
||||
/**
|
||||
* Base class for CMS fields
|
||||
|
Loading…
Reference in New Issue
Block a user