wiki.techinc.nl/includes/libs/Message/ListParam.php
Brad Jorsch d07a2e2c8d libs/Message: Improve parameter validation
Validate that all parameters are of expected types, not just list
parameter values.

Change-Id: Id47c6f9ad1cf3a3dfc1f6d0c3766ba607c4ef633
2019-10-17 15:57:54 -04:00

47 lines
1.2 KiB
PHP

<?php
namespace Wikimedia\Message;
/**
* Value object representing a message parameter that consists of a list of values.
*
* Message parameter classes are pure value objects and are safely newable.
*/
class ListParam extends MessageParam {
private $listType;
/**
* @param string $listType One of the ListType constants.
* @param (MessageParam|MessageValue|string|int|float)[] $elements Values in the list.
* Values that are not instances of MessageParam are wrapped using ParamType::TEXT.
*/
public function __construct( $listType, array $elements ) {
$this->type = ParamType::LIST;
$this->listType = $listType;
$this->value = [];
foreach ( $elements as $element ) {
if ( $element instanceof MessageParam ) {
$this->value[] = $element;
} else {
$this->value[] = new ScalarParam( ParamType::TEXT, $element );
}
}
}
/**
* Get the type of the list
*
* @return string One of the ListType constants
*/
public function getListType() {
return $this->listType;
}
public function dump() {
$contents = '';
foreach ( $this->value as $element ) {
$contents .= $element->dump();
}
return "<{$this->type} listType=\"{$this->listType}\">$contents</{$this->type}>";
}
}