key = $key; parent::__construct(); } public static function make( string $key = 'promotion' ): self { return new static( $key ); } public static function get_key(): string { return 'promotion'; } public function jsonSerialize(): array { $data = parent::jsonSerialize(); $data['key'] = $this->key; return $data; } protected function define_item_type(): Prop_Type { return String_Prop_Type::make(); } }