Jeroen De Dauw has uploaded a new change for review. https://gerrit.wikimedia.org/r/72757
Change subject: Move out (de)serialization code to Serializers [DO NOT MERGE] ...................................................................... Move out (de)serialization code to Serializers [DO NOT MERGE] Change-Id: I8f5ff0944dfb97a84369476d05a1bc3355e4ce41 --- M Ask.php M composer.json M src/Ask/Serializers/DescriptionSerializer.php M src/Ask/Serializers/QueryOptionsSerializer.php M src/Ask/Serializers/QuerySerializer.php M src/Ask/Serializers/SelectionRequestSerializer.php M src/Ask/Serializers/SortExpressionSerializer.php D src/Deserializers/Deserializer.php D src/Deserializers/DispatchingDeserializer.php D src/Deserializers/Exceptions/DeserializationException.php D src/Deserializers/Exceptions/InvalidAttributeException.php D src/Deserializers/Exceptions/MissingAttributeException.php D src/Deserializers/Exceptions/MissingTypeException.php D src/Deserializers/Exceptions/UnsupportedTypeException.php D src/Deserializers/StrategicDeserializer.php D src/Deserializers/TypedDeserializationStrategy.php D src/Deserializers/TypedObjectDeserializer.php D src/Serializers/DispatchingSerializer.php D src/Serializers/Exceptions/SerializationException.php D src/Serializers/Exceptions/UnsupportedObjectException.php D src/Serializers/Serializer.php 21 files changed, 31 insertions(+), 651 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Ask refs/changes/57/72757/1 diff --git a/Ask.php b/Ask.php index ee66bb1..a2ac303 100644 --- a/Ask.php +++ b/Ask.php @@ -35,9 +35,9 @@ define( 'Ask_VERSION', '0.1 alpha' ); -// Attempt to include the DataValues lib if that hasn't been done yet. +// Attempt to include the dependencies if one has not been loaded yet. // This is the path to the autoloader generated by composer in case of a composer install. -if ( !defined( 'DataValues_VERSION' ) && is_readable( __DIR__ . '/vendor/autoload.php' ) ) { +if ( ( !defined( 'DataValues_VERSION' ) || !defined( 'Serialization_VERSION' ) ) && is_readable( __DIR__ . '/vendor/autoload.php' ) ) { include_once( __DIR__ . '/vendor/autoload.php' ); } @@ -47,9 +47,20 @@ include_once( __DIR__ . '/../DataValues/DataValues.php' ); } +// Attempt to include the Serialization lib if that hasn't been done yet. +// This is the path the Serialization entry point will be at when loaded as MediaWiki extension. +if ( !defined( 'Serialization_VERSION' ) && is_readable( __DIR__ . '/../Serialization/Serialization.php' ) ) { + include_once( __DIR__ . '/../Serialization/Serialization.php' ); +} + // Only initialize the extension when all dependencies are present. if ( !defined( 'DataValues_VERSION' ) ) { throw new Exception( 'You need to have the DataValues library loaded in order to use Ask' ); +} + +// Only initialize the extension when all dependencies are present. +if ( !defined( 'Serialization_VERSION' ) ) { + throw new Exception( 'You need to have the Serialization library loaded in order to use Ask' ); } // @codeCoverageIgnoreStart @@ -68,7 +79,7 @@ $namespaceSegments = explode( '\\', $namespace ); - if ( $namespaceSegments[0] === 'Ask' || $namespaceSegments[0] === 'Serializers' || $namespaceSegments[0] === 'Deserializers' ) { + if ( $namespaceSegments[0] === 'Ask' ) { if ( count( $namespaceSegments ) === 1 || $namespaceSegments[1] !== 'Tests' ) { require_once __DIR__ . '/src/' . $fileName; } diff --git a/composer.json b/composer.json index ea26525..71fd0e1 100644 --- a/composer.json +++ b/composer.json @@ -26,9 +26,9 @@ }, "require": { "php": ">=5.3.0", - "data-values/data-values": "dev-master" + "data-values/data-values": "@dev", + "serialization/serialization": ">=1.0@dev" }, - "minimum-stability" : "dev", "autoload": { "files" : [ "Ask.php" diff --git a/src/Ask/Serializers/DescriptionSerializer.php b/src/Ask/Serializers/DescriptionSerializer.php index 4186458..3415c62 100644 --- a/src/Ask/Serializers/DescriptionSerializer.php +++ b/src/Ask/Serializers/DescriptionSerializer.php @@ -21,9 +21,9 @@ */ class DescriptionSerializer implements Serializer { - public function serialize( $askObject ) { - $this->assertCanSerialize( $askObject ); - return $this->getSerializedDescription( $askObject ); + public function serialize( $object ) { + $this->assertCanSerialize( $object ); + return $this->getSerializedDescription( $object ); } protected function getSerializedDescription( Description $description ) { diff --git a/src/Ask/Serializers/QueryOptionsSerializer.php b/src/Ask/Serializers/QueryOptionsSerializer.php index 21e9d7e..82d277b 100644 --- a/src/Ask/Serializers/QueryOptionsSerializer.php +++ b/src/Ask/Serializers/QueryOptionsSerializer.php @@ -28,9 +28,9 @@ $this->componentSerializer = $componentSerializer; } - public function serialize( $askObject ) { - $this->assertCanSerialize( $askObject ); - return $this->getSerializedOptions( $askObject ); + public function serialize( $object ) { + $this->assertCanSerialize( $object ); + return $this->getSerializedOptions( $object ); } protected function assertCanSerialize( $askObject ) { diff --git a/src/Ask/Serializers/QuerySerializer.php b/src/Ask/Serializers/QuerySerializer.php index d80ab93..bc38363 100644 --- a/src/Ask/Serializers/QuerySerializer.php +++ b/src/Ask/Serializers/QuerySerializer.php @@ -27,10 +27,10 @@ $this->componentSerializer = $componentSerializer; } - public function serialize( $askObject ) { - $this->assertCanSerialize( $askObject ); + public function serialize( $object ) { + $this->assertCanSerialize( $object ); - return $this->getSerializedQuery( $askObject ); + return $this->getSerializedQuery( $object ); } protected function assertCanSerialize( $askObject ) { diff --git a/src/Ask/Serializers/SelectionRequestSerializer.php b/src/Ask/Serializers/SelectionRequestSerializer.php index d2c3e82..7e23917 100644 --- a/src/Ask/Serializers/SelectionRequestSerializer.php +++ b/src/Ask/Serializers/SelectionRequestSerializer.php @@ -19,9 +19,9 @@ */ class SelectionRequestSerializer implements Serializer { - public function serialize( $askObject ) { - $this->assertCanSerialize( $askObject ); - return $this->getSerializedSelectionRequest( $askObject ); + public function serialize( $object ) { + $this->assertCanSerialize( $object ); + return $this->getSerializedSelectionRequest( $object ); } protected function assertCanSerialize( $askObject ) { diff --git a/src/Ask/Serializers/SortExpressionSerializer.php b/src/Ask/Serializers/SortExpressionSerializer.php index a8a2acc..0f24c97 100644 --- a/src/Ask/Serializers/SortExpressionSerializer.php +++ b/src/Ask/Serializers/SortExpressionSerializer.php @@ -18,9 +18,9 @@ */ class SortExpressionSerializer implements Serializer { - public function serialize( $askObject ) { - $this->assertCanSerialize( $askObject ); - return $this->getSerializedSortExpression( $askObject ); + public function serialize( $object ) { + $this->assertCanSerialize( $object ); + return $this->getSerializedSortExpression( $object ); } protected function assertCanSerialize( $askObject ) { diff --git a/src/Deserializers/Deserializer.php b/src/Deserializers/Deserializer.php deleted file mode 100644 index 7c06a46..0000000 --- a/src/Deserializers/Deserializer.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -namespace Deserializers; - -use Deserializers\Exceptions\DeserializationException; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -interface Deserializer { - - /** - * @since 0.1 - * - * @param mixed $serialization - * - * @return object - * @throws DeserializationException - */ - public function deserialize( $serialization ); - - /** - * Returns if the deserializer can deserialzie the provided object. - * - * Note: deserializers are expected to do checks to verify the provided - * object is of a type they can deserialize. No full deserialization is - * attempted. Thus when providing invalid data structures, it is possible - * this method returns true even though deserialization will fail. - * - * @since 0.1 - * - * @param mixed $serialization - * - * @return boolean - */ - public function canDeserialize( $serialization ); - -} diff --git a/src/Deserializers/DispatchingDeserializer.php b/src/Deserializers/DispatchingDeserializer.php deleted file mode 100644 index 66eca22..0000000 --- a/src/Deserializers/DispatchingDeserializer.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -namespace Deserializers; - -use Deserializers\Exceptions\DeserializationException; -use InvalidArgumentException; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class DispatchingDeserializer implements Deserializer { - - /** - * @var Deserializer[] - */ - protected $deserializers; - - /** - * @param Deserializer[] $deserializers - */ - public function __construct( array $deserializers = array() ) { - $this->assertAreDeserializers( $deserializers ); - $this->deserializers = $deserializers; - } - - protected function assertAreDeserializers( array $deserializers ) { - foreach ( $deserializers as $deserializer ) { - if ( !is_object( $deserializer ) || !( $deserializer instanceof Deserializer ) ) { - throw new InvalidArgumentException( 'All $deserializers need to implement the Deserializer interface' ); - } - } - } - - public function deserialize( $serialization ) { - foreach ( $this->deserializers as $deserializer ) { - if ( $deserializer->canDeserialize( $serialization ) ) { - return $deserializer->deserialize( $serialization ); - } - } - - throw new DeserializationException( - 'None of the deserializers can deserialize the provided serialization' - ); - } - - public function canDeserialize( $serialization ) { - foreach ( $this->deserializers as $deserializer ) { - if ( $deserializer->canDeserialize( $serialization ) ) { - return true; - } - } - - return false; - } - - /** - * @since 0.1 - * - * @param Deserializer $serializer - */ - public function addDeserializer( Deserializer $serializer ) { - $this->deserializers[] = $serializer; - } - -} diff --git a/src/Deserializers/Exceptions/DeserializationException.php b/src/Deserializers/Exceptions/DeserializationException.php deleted file mode 100644 index 1ca732f..0000000 --- a/src/Deserializers/Exceptions/DeserializationException.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Deserializers\Exceptions; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class DeserializationException extends \RuntimeException { - - public function __construct( $message = '', \Exception $previous = null ) { - parent::__construct( $message, 0, $previous ); - } - -} diff --git a/src/Deserializers/Exceptions/InvalidAttributeException.php b/src/Deserializers/Exceptions/InvalidAttributeException.php deleted file mode 100644 index 16a54c0..0000000 --- a/src/Deserializers/Exceptions/InvalidAttributeException.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -namespace Deserializers\Exceptions; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class InvalidAttributeException extends DeserializationException { - - protected $attributeName; - protected $attributeValue; - - /** - * @param string $attributeName - * @param mixed $attributeValue - * @param string $message - * @param \Exception $previous - */ - public function __construct( $attributeName, $attributeValue, $message = '', \Exception $previous = null ) { - $this->attributeName = $attributeName; - $this->attributeValue = $attributeValue; - - parent::__construct( $message, $previous ); - } - - /** - * @return string - */ - public function getAttributeName() { - return $this->attributeName; - } - - /** - * @return string - */ - public function getAttributeValue() { - return $this->attributeValue; - } - -} diff --git a/src/Deserializers/Exceptions/MissingAttributeException.php b/src/Deserializers/Exceptions/MissingAttributeException.php deleted file mode 100644 index 930ace9..0000000 --- a/src/Deserializers/Exceptions/MissingAttributeException.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -namespace Deserializers\Exceptions; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class MissingAttributeException extends DeserializationException { - - protected $attributeName; - - /** - * @param string $attributeName - * @param string $message - * @param \Exception $previous - */ - public function __construct( $attributeName, $message = '', \Exception $previous = null ) { - $this->attributeName = $attributeName; - - parent::__construct( $message, $previous ); - } - - /** - * @return string - */ - public function getAttributeName() { - return $this->attributeName; - } - -} diff --git a/src/Deserializers/Exceptions/MissingTypeException.php b/src/Deserializers/Exceptions/MissingTypeException.php deleted file mode 100644 index 389b8cf..0000000 --- a/src/Deserializers/Exceptions/MissingTypeException.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace Deserializers\Exceptions; - -/** - * Indicates the objectType key is missing in the serialization. - * - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class MissingTypeException extends DeserializationException { - - protected $unsupportedType; - - /** - * @param string $message - * @param \Exception $previous - */ - public function __construct( $message = '', \Exception $previous = null ) { - parent::__construct( $message, $previous ); - } - -} diff --git a/src/Deserializers/Exceptions/UnsupportedTypeException.php b/src/Deserializers/Exceptions/UnsupportedTypeException.php deleted file mode 100644 index 0fd6efa..0000000 --- a/src/Deserializers/Exceptions/UnsupportedTypeException.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -namespace Deserializers\Exceptions; - -/** - * Indicates the objectType specified in the serialization is not supported by a deserializer. - * - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class UnsupportedTypeException extends DeserializationException { - - protected $unsupportedType; - - /** - * @param mixed $unsupportedType - * @param string $message - * @param \Exception $previous - */ - public function __construct( $unsupportedType, $message = '', \Exception $previous = null ) { - $this->unsupportedType = $unsupportedType; - - parent::__construct( $message, $previous ); - } - - /** - * @return mixed - */ - public function getUnsupportedType() { - return $this->unsupportedType; - } - -} diff --git a/src/Deserializers/StrategicDeserializer.php b/src/Deserializers/StrategicDeserializer.php deleted file mode 100644 index 553f120..0000000 --- a/src/Deserializers/StrategicDeserializer.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -namespace Deserializers; - -use Deserializers\TypedDeserializationStrategy; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class StrategicDeserializer extends TypedObjectDeserializer { - - protected $deserializationStrategy; - protected $subTypeKey; - - /** - * @param TypedDeserializationStrategy $deserializationStrategy - * @param string $objectType The objectType that is supported. For instance "description" or "selectionRequest". - * @param string $subTypeKey The name of the key used for the specific type of object. For instance "descriptionType" or "sortExpressionType". - */ - public function __construct( TypedDeserializationStrategy $deserializationStrategy, $objectType, $subTypeKey ) { - $this->deserializationStrategy = $deserializationStrategy; - $this->subTypeKey = $subTypeKey; - - parent::__construct( $objectType ); - } - - public function deserialize( $serialization ) { - $this->assertCanDeserialize( $serialization ); - return $this->getDeserialization( $serialization ); - } - - protected function getDeserialization( array $serialization ) { - $this->requireAttribute( $serialization, $this->subTypeKey ); - $this->requireAttributes( $serialization, 'value' ); - $this->assertAttributeIsArray( $serialization, 'value' ); - - $specificType = $serialization[$this->subTypeKey]; - $valueSerialization = $serialization['value']; - - return $this->deserializationStrategy->getDeserializedValue( $specificType, $valueSerialization ); - } - -} diff --git a/src/Deserializers/TypedDeserializationStrategy.php b/src/Deserializers/TypedDeserializationStrategy.php deleted file mode 100644 index 758423f..0000000 --- a/src/Deserializers/TypedDeserializationStrategy.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -namespace Deserializers; - -use Deserializers\Exceptions\DeserializationException; -use Deserializers\Exceptions\InvalidAttributeException; -use Deserializers\Exceptions\MissingAttributeException; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -abstract class TypedDeserializationStrategy { - - /** - * Deserializes the value serialization into an object. - * - * @since 0.1 - * - * @param string $specificType - * @param array $valueSerialization - * - * @return object - * @throws DeserializationException - */ - public abstract function getDeserializedValue( $specificType, array $valueSerialization ); - - protected function requireAttribute( array $array, $attributeName ) { - if ( !array_key_exists( $attributeName, $array ) ) { - throw new MissingAttributeException( - $attributeName - ); - } - } - - protected function assertAttributeIsArray( array $array, $attributeName ) { - if ( !is_array( $array[$attributeName] ) ) { - throw new InvalidAttributeException( - $attributeName, - $array[$attributeName] - ); - } - } - - protected function requireAttributes( array $array ) { - $requiredAttributes = func_get_args(); - array_shift( $requiredAttributes ); - - foreach ( $requiredAttributes as $attribute ) { - $this->requireAttribute( $array, $attribute ); - } - } - -} diff --git a/src/Deserializers/TypedObjectDeserializer.php b/src/Deserializers/TypedObjectDeserializer.php deleted file mode 100644 index b436bca..0000000 --- a/src/Deserializers/TypedObjectDeserializer.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -namespace Deserializers; - -use Deserializers\Exceptions\InvalidAttributeException; -use Deserializers\Exceptions\MissingAttributeException; -use Deserializers\Exceptions\MissingTypeException; -use Deserializers\Exceptions\UnsupportedTypeException; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -abstract class TypedObjectDeserializer implements Deserializer { - - protected $objectType; - - public function __construct( $objectType ) { - $this->objectType = $objectType; - } - - protected function assertCanDeserialize( $serialization ) { - if ( !$this->hasObjectType( $serialization ) ) { - throw new MissingTypeException(); - } - - if ( !$this->hasCorrectObjectType( $serialization ) ) { - throw new UnsupportedTypeException( $serialization['objectType'] ); - } - } - - public function canDeserialize( $serialization ) { - return $this->hasObjectType( $serialization ) && $this->hasCorrectObjectType( $serialization ); - } - - private function hasCorrectObjectType( $serialization ) { - return $serialization['objectType'] === $this->objectType; - } - - private function hasObjectType( $serialization ) { - return is_array( $serialization ) - && array_key_exists( 'objectType', $serialization ); - } - - protected function requireAttributes( array $array ) { - $requiredAttributes = func_get_args(); - array_shift( $requiredAttributes ); - - foreach ( $requiredAttributes as $attribute ) { - $this->requireAttribute( $array, $attribute ); - } - } - - protected function requireAttribute( array $array, $attributeName ) { - if ( !array_key_exists( $attributeName, $array ) ) { - throw new MissingAttributeException( - $attributeName - ); - } - } - - protected function assertAttributeIsArray( array $array, $attributeName ) { - $this->assertAttributeInternalType( $array, $attributeName, 'array' ); - } - - protected function assertAttributeInternalType( array $array, $attributeName, $internalType ) { - if ( gettype( $array[$attributeName] ) !== $internalType ) { - throw new InvalidAttributeException( - $attributeName, - $array[$attributeName], - "The internal type of attribute '$attributeName' needs to be '$internalType'" - ); - } - } - -} diff --git a/src/Serializers/DispatchingSerializer.php b/src/Serializers/DispatchingSerializer.php deleted file mode 100644 index 0354aec..0000000 --- a/src/Serializers/DispatchingSerializer.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php - -namespace Serializers; - -use InvalidArgumentException; -use Serializers\Exceptions\UnsupportedObjectException; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class DispatchingSerializer implements Serializer { - - /** - * @var Serializer[] - */ - protected $serializers; - - /** - * @param Serializer[] $serializers - */ - public function __construct( array $serializers = array() ) { - $this->assertAreSerializers( $serializers ); - $this->serializers = $serializers; - } - - protected function assertAreSerializers( array $serializers ) { - foreach ( $serializers as $serializer ) { - if ( !( $serializer instanceof Serializer ) ) { - throw new InvalidArgumentException( 'Got an object that is not an instance of Ask\Serializers\Serializer' ); - } - } - } - - public function serialize( $askObject ) { - foreach ( $this->serializers as $serializer ) { - if ( $serializer->canSerialize( $askObject ) ) { - return $serializer->serialize( $askObject ); - } - } - - throw new UnsupportedObjectException( $askObject ); - } - - public function canSerialize( $askObject ) { - foreach ( $this->serializers as $serializer ) { - if ( $serializer->canSerialize( $askObject ) ) { - return true; - } - } - - return false; - } - - /** - * @since 0.1 - * - * @param Serializer $serializer - */ - public function addSerializer( Serializer $serializer ) { - $this->serializers[] = $serializer; - } - -} diff --git a/src/Serializers/Exceptions/SerializationException.php b/src/Serializers/Exceptions/SerializationException.php deleted file mode 100644 index 02cbc4b..0000000 --- a/src/Serializers/Exceptions/SerializationException.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Serializers\Exceptions; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -abstract class SerializationException extends \RuntimeException { - - public function __construct( $message = '', \Exception $previous = null ) { - parent::__construct( $message, 0, $previous ); - } - -} diff --git a/src/Serializers/Exceptions/UnsupportedObjectException.php b/src/Serializers/Exceptions/UnsupportedObjectException.php deleted file mode 100644 index 106685a..0000000 --- a/src/Serializers/Exceptions/UnsupportedObjectException.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -namespace Serializers\Exceptions; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class UnsupportedObjectException extends SerializationException { - - protected $unsupportedObject; - - /** - * @param mixed $unsupportedObject - * @param string $message - * @param \Exception $previous - */ - public function __construct( $unsupportedObject, $message = '', \Exception $previous = null ) { - $this->unsupportedObject = $unsupportedObject; - - parent::__construct( $message, $previous ); - } - - /** - * @return mixed - */ - public function getUnsupportedObject() { - return $this->unsupportedObject; - } - -} diff --git a/src/Serializers/Serializer.php b/src/Serializers/Serializer.php deleted file mode 100644 index 98988ff..0000000 --- a/src/Serializers/Serializer.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -namespace Serializers; - -/** - * @since 0.1 - * - * @file - * @ingroup Ask - * - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -interface Serializer { - - /** - * @since 0.1 - * - * @param mixed $askObject - * - * @return array|int|string|bool|float A possibly nested structure consisting of only arrays and scalar values - */ - public function serialize( $askObject ); - - /** - * @since 0.1 - * - * @param mixed $askObject - * - * @return boolean - */ - public function canSerialize( $askObject ); - -} -- To view, visit https://gerrit.wikimedia.org/r/72757 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8f5ff0944dfb97a84369476d05a1bc3355e4ce41 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Ask Gerrit-Branch: master Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits