diff options
Diffstat (limited to 'tests/phpunit/mocks/json/ManagedObject.php')
-rw-r--r-- | tests/phpunit/mocks/json/ManagedObject.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/phpunit/mocks/json/ManagedObject.php b/tests/phpunit/mocks/json/ManagedObject.php new file mode 100644 index 000000000000..45f2638bf427 --- /dev/null +++ b/tests/phpunit/mocks/json/ManagedObject.php @@ -0,0 +1,41 @@ +<?php +namespace MediaWiki\Tests\Json; + +use Psr\Container\ContainerInterface; +use Wikimedia\JsonCodec\JsonClassCodec; +use Wikimedia\JsonCodec\JsonCodecable; +use Wikimedia\JsonCodec\JsonCodecInterface; + +/** + * Managed object which uses a factory in a service. + */ +class ManagedObject implements JsonCodecable { + + /** @var string */ + public string $name; + /** @var int */ + public int $data; + + /** + * Create a new ManagedObject which stores $property. This constructor + * shouldn't be invoked directly by anyone except ManagedObjectFactory. + * + * @param string $name + * @param int $data + * @internal + */ + public function __construct( string $name, int $data ) { + $this->name = $name; + $this->data = $data; + } + + // Implement JsonCodecable by delegating serialization/deserialization + // to the 'ManagedObjectFactory' service. + + /** @inheritDoc */ + public static function jsonClassCodec( + JsonCodecInterface $codec, ContainerInterface $serviceContainer + ): JsonClassCodec { + return $serviceContainer->get( 'ManagedObjectFactory' ); + } +} |