API Add back strong typing that got removed in a merge-up (#11372)

This commit is contained in:
Guy Sartorelli 2024-09-12 15:32:13 +12:00 committed by GitHub
parent 907cb17325
commit 8662c07f86
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,6 +6,7 @@ use SilverStripe\Core\ClassInfo;
use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Config;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use RuntimeException; use RuntimeException;
use SilverStripe\View\ViewableData;
trait DBClassNameTrait trait DBClassNameTrait
{ {
@ -13,28 +14,23 @@ trait DBClassNameTrait
* Base classname of class to enumerate. * Base classname of class to enumerate.
* If 'DataObject' then all classes are included. * If 'DataObject' then all classes are included.
* If empty, then the baseClass of the parent object will be used * If empty, then the baseClass of the parent object will be used
*
* @var string|null
*/ */
protected $baseClass = null; protected ?string $baseClass = null;
/** /**
* Parent object * 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 * Create a new DBClassName field
* *
* @param string $name Name of field
* @param string|null $baseClass Optional base class to limit selections * @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); $this->setBaseClass($baseClass);
if (is_a($this, DBVarchar::class)) { if (is_a($this, DBVarchar::class)) {
@ -48,10 +44,8 @@ trait DBClassNameTrait
/** /**
* Get the base dataclass for the list of subclasses * Get the base dataclass for the list of subclasses
*
* @return string
*/ */
public function getBaseClass() public function getBaseClass(): string
{ {
// Use explicit base class // Use explicit base class
if ($this->baseClass) { if ($this->baseClass) {
@ -74,25 +68,20 @@ trait DBClassNameTrait
/** /**
* Get the base name of the current class * Get the base name of the current class
* Useful as a non-fully qualified CSS Class name in templates. * Useful as a non-fully qualified CSS Class name in templates.
*
* @return string|null
*/ */
public function getShortName() public function getShortName(): string
{ {
$value = $this->getValue(); $value = $this->getValue();
if (empty($value) || !ClassInfo::exists($value)) { if (empty($value) || !ClassInfo::exists($value)) {
return null; return '';
} }
return ClassInfo::shortName($value); return ClassInfo::shortName($value);
} }
/** /**
* Assign the base class * Assign the base class
*
* @param string $baseClass
* @return $this
*/ */
public function setBaseClass($baseClass) public function setBaseClass(?string $baseClass): static
{ {
$this->baseClass = $baseClass; $this->baseClass = $baseClass;
return $this; return $this;
@ -100,10 +89,8 @@ trait DBClassNameTrait
/** /**
* Get list of classnames that should be selectable * Get list of classnames that should be selectable
*
* @return array
*/ */
public function getEnum() public function getEnum(): array
{ {
$classNames = ClassInfo::subclassesFor($this->getBaseClass()); $classNames = ClassInfo::subclassesFor($this->getBaseClass());
$dataobject = strtolower(DataObject::class); $dataobject = strtolower(DataObject::class);
@ -111,7 +98,7 @@ trait DBClassNameTrait
return array_values($classNames ?? []); 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); parent::setValue($value, $record, $markChanged);
@ -122,7 +109,7 @@ trait DBClassNameTrait
return $this; return $this;
} }
private function getDefaultClassName() private function getDefaultClassName(): string
{ {
// Allow classes to set default class // Allow classes to set default class
$baseClass = $this->getBaseClass(); $baseClass = $this->getBaseClass();