X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiMessage.php;h=ae66778641571f1c217fc5f7c9f0e5204b16266b;hb=cb506aecdfe6356b5a848858f1d6c04f6c7821f6;hp=5c3434f95ca5adeb9e42cbd4f45fc2f65cd28b89;hpb=3cab263105feb5a64f996ab1b74802ba87dac8db;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiMessage.php b/includes/api/ApiMessage.php index 5c3434f95c..ae66778641 100644 --- a/includes/api/ApiMessage.php +++ b/includes/api/ApiMessage.php @@ -63,15 +63,57 @@ interface IApiMessage extends MessageSpecifier { public function setApiData( array $data ); } +/** + * Trait to implement the IApiMessage interface for Message subclasses + * @since 1.27 + * @ingroup API + */ +trait ApiMessageTrait { + protected $apiCode = null; + protected $apiData = []; + + public function getApiCode() { + return $this->apiCode === null ? $this->getKey() : $this->apiCode; + } + + public function setApiCode( $code, array $data = null ) { + $this->apiCode = $code; + if ( $data !== null ) { + $this->setApiData( $data ); + } + } + + public function getApiData() { + return $this->apiData; + } + + public function setApiData( array $data ) { + $this->apiData = $data; + } + + public function serialize() { + return serialize( [ + 'parent' => parent::serialize(), + 'apiCode' => $this->apiCode, + 'apiData' => $this->apiData, + ] ); + } + + public function unserialize( $serialized ) { + $data = unserialize( $serialized ); + parent::unserialize( $data['parent'] ); + $this->apiCode = $data['apiCode']; + $this->apiData = $data['apiData']; + } +} + /** * Extension of Message implementing IApiMessage * @since 1.25 * @ingroup API - * @todo: Would be nice to use a Trait here to avoid code duplication */ class ApiMessage extends Message implements IApiMessage { - protected $apiCode = null; - protected $apiData = array(); + use ApiMessageTrait; /** * Create an IApiMessage for the message @@ -119,51 +161,15 @@ class ApiMessage extends Message implements IApiMessage { $this->apiCode = $code; $this->apiData = (array)$data; } - - public function getApiCode() { - return $this->apiCode === null ? $this->getKey() : $this->apiCode; - } - - public function setApiCode( $code, array $data = null ) { - $this->apiCode = $code; - if ( $data !== null ) { - $this->setApiData( $data ); - } - } - - public function getApiData() { - return $this->apiData; - } - - public function setApiData( array $data ) { - $this->apiData = $data; - } - - public function serialize() { - return serialize( array( - 'parent' => parent::serialize(), - 'apiCode' => $this->apiCode, - 'apiData' => $this->apiData, - ) ); - } - - public function unserialize( $serialized ) { - $data = unserialize( $serialized ); - parent::unserialize( $data['parent'] ); - $this->apiCode = $data['apiCode']; - $this->apiData = $data['apiData']; - } } /** * Extension of RawMessage implementing IApiMessage * @since 1.25 * @ingroup API - * @todo: Would be nice to use a Trait here to avoid code duplication */ class ApiRawMessage extends RawMessage implements IApiMessage { - protected $apiCode = null; - protected $apiData = array(); + use ApiMessageTrait; /** * @param RawMessage|string|array $msg @@ -189,38 +195,4 @@ class ApiRawMessage extends RawMessage implements IApiMessage { $this->apiCode = $code; $this->apiData = (array)$data; } - - public function getApiCode() { - return $this->apiCode === null ? $this->getKey() : $this->apiCode; - } - - public function setApiCode( $code, array $data = null ) { - $this->apiCode = $code; - if ( $data !== null ) { - $this->setApiData( $data ); - } - } - - public function getApiData() { - return $this->apiData; - } - - public function setApiData( array $data ) { - $this->apiData = $data; - } - - public function serialize() { - return serialize( array( - 'parent' => parent::serialize(), - 'apiCode' => $this->apiCode, - 'apiData' => $this->apiData, - ) ); - } - - public function unserialize( $serialized ) { - $data = unserialize( $serialized ); - parent::unserialize( $data['parent'] ); - $this->apiCode = $data['apiCode']; - $this->apiData = $data['apiData']; - } }