From b3d13b82527f2103dbcfd4940982c21f2f26b99b Mon Sep 17 00:00:00 2001 From: Guy Sartorelli Date: Thu, 12 Sep 2024 12:11:58 +1200 Subject: [PATCH] API Add back strong typing that got removed in a merge-up --- src/ORM/FieldType/DBClassNameTrait.php | 41 +++++++++----------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/src/ORM/FieldType/DBClassNameTrait.php b/src/ORM/FieldType/DBClassNameTrait.php index b2d6aac1dd6..fbcf56cfe94 100644 --- a/src/ORM/FieldType/DBClassNameTrait.php +++ b/src/ORM/FieldType/DBClassNameTrait.php @@ -5,6 +5,7 @@ use SilverStripe\Core\ClassInfo; use SilverStripe\Core\Config\Config; use SilverStripe\ORM\DataObject; +use SilverStripe\View\ViewableData; trait DBClassNameTrait { @@ -12,28 +13,23 @@ trait DBClassNameTrait * Base classname of class to enumerate. * If 'DataObject' then all classes are included. * If empty, then the baseClass of the parent object will be used - * - * @var string|null */ - protected $baseClass = null; + protected ?string $baseClass = null; /** * Parent object - * - * @var DataObject|null */ - protected $record = null; + protected ?DataObject $record = null; - private static $index = true; + private static string|bool $index = true; /** * Create a new DBClassName field * - * @param string $name Name of field * @param string|null $baseClass Optional base class to limit selections - * @param array $options Optional parameters for this DBField instance + * @param array $options Optional parameters for this DBField instance */ - public function __construct($name = null, $baseClass = null, $options = []) + public function __construct(?string $name = null, ?string $baseClass = null, array $options = []) { $this->setBaseClass($baseClass); parent::__construct($name, null, null, $options); @@ -41,10 +37,8 @@ public function __construct($name = null, $baseClass = null, $options = []) /** * Get the base dataclass for the list of subclasses - * - * @return string */ - public function getBaseClass() + public function getBaseClass(): string { // Use explicit base class if ($this->baseClass) { @@ -67,25 +61,20 @@ public function getBaseClass() /** * Get the base name of the current class * Useful as a non-fully qualified CSS Class name in templates. - * - * @return string|null */ - public function getShortName() + public function getShortName(): string { $value = $this->getValue(); if (empty($value) || !ClassInfo::exists($value)) { - return null; + return ''; } return ClassInfo::shortName($value); } /** * Assign the base class - * - * @param string $baseClass - * @return $this */ - public function setBaseClass($baseClass) + public function setBaseClass(?string $baseClass): static { $this->baseClass = $baseClass; return $this; @@ -93,10 +82,8 @@ public function setBaseClass($baseClass) /** * Get list of classnames that should be selectable - * - * @return array */ - public function getEnum() + public function getEnum(): array { $classNames = ClassInfo::subclassesFor($this->getBaseClass()); $dataobject = strtolower(DataObject::class); @@ -104,7 +91,7 @@ public function getEnum() return array_values($classNames ?? []); } - public function setValue($value, $record = null, $markChanged = true) + public function setValue(mixed $value, null|array|ViewableData $record = null, bool $markChanged = true): static { parent::setValue($value, $record, $markChanged); @@ -114,8 +101,8 @@ public function setValue($value, $record = null, $markChanged = true) return $this; } - - private function getDefaultClassName() + + private function getDefaultClassName(): string { // Allow classes to set default class $baseClass = $this->getBaseClass();