diff --git a/src/ORM/DataObject.php b/src/ORM/DataObject.php index e461c6abb..11341c93d 100644 --- a/src/ORM/DataObject.php +++ b/src/ORM/DataObject.php @@ -12,6 +12,7 @@ use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Resettable; use SilverStripe\Dev\Debug; use SilverStripe\Dev\Deprecation; +use SilverStripe\Dev\TestOnly; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\FormField; use SilverStripe\Forms\FormScaffolder; @@ -3627,6 +3628,17 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity ); } + // Sanity check for fields that conflict with parent + foreach (array_keys($fields) as $fieldName) { + if (method_exists(get_parent_class($this), $fieldName) && !($this instanceof TestOnly)) { + throw new LogicException(sprintf( + '\'%s\' has a $db field named "%s" that coincides with an inherited method of the same name.', + static::class, + $fieldName + )); + } + } + if ($fields) { $hasAutoIncPK = get_parent_class($this ?? '') === self::class; DB::require_table(