Skip to content

Commit

Permalink
PHP 8.1 magic method support
Browse files Browse the repository at this point in the history
  • Loading branch information
koriym committed Nov 4, 2021
1 parent 13a5e8b commit 149bdbb
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 42 deletions.
22 changes: 1 addition & 21 deletions src/FilesystemAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,15 @@
use Symfony\Component\Cache\Adapter\FilesystemAdapter as OriginAdapter;
use Symfony\Component\Cache\Marshaller\MarshallerInterface;

use function call_user_func_array;
use function func_get_args;
use function serialize;
use function unserialize;

class FilesystemAdapter extends OriginAdapter implements Serializable
{
/** @var array<int, mixed> */
private $args;
use SerializableTrait;

public function __construct(string $namespace = '', int $defaultLifetime = 0, ?string $directory = null, ?MarshallerInterface $marshaller = null)
{
$this->args = func_get_args();
parent::__construct($namespace, $defaultLifetime, $directory, $marshaller);
}

/**
* @inheritDoc
*/
public function serialize()
{
return serialize($this->args);
}

/**
* @inheritDoc
*/
public function unserialize($data)
{
call_user_func_array([$this, '__construct'], unserialize($data)); // @phpstan-ignore-line
}
}
22 changes: 1 addition & 21 deletions src/PhpFileAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,15 @@
use Serializable;
use Symfony\Component\Cache\Adapter\PhpFilesAdapter as OriginAdapter;

use function call_user_func_array;
use function func_get_args;
use function serialize;
use function unserialize;

class PhpFileAdapter extends OriginAdapter implements Serializable
{
/** @var array<int, mixed> */
private $args;
use SerializableTrait;

public function __construct(string $namespace = '', int $defaultLifetime = 0, ?string $directory = null, bool $appendOnly = false)
{
$this->args = func_get_args();
parent::__construct($namespace, $defaultLifetime, $directory, $appendOnly);
}

/**
* @inheritDoc
*/
public function serialize()
{
return serialize($this->args);
}

/**
* @inheritDoc
*/
public function unserialize($data)
{
call_user_func_array([$this, '__construct'], unserialize($data)); // @phpstan-ignore-line
}
}
41 changes: 41 additions & 0 deletions src/SerializableTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

declare(strict_types=1);

namespace Ray\PsrCacheModule;

use function call_user_func_array;
use function serialize;
use function unserialize;

trait SerializableTrait
{
/** @var array<int, mixed> */
private $args;

/**
* @inheritDoc
*/
public function serialize()
{
return serialize($this->__serialize());
}

/**
* @inheritDoc
*/
public function unserialize(string $serializedData)
{
return $this->__unserialize(unserialize($serializedData));
}

public function __serialize(): array
{
return $this->args;
}

public function __unserialize(array $data): void
{
call_user_func_array([$this, '__construct'], $data); // @phpstan-ignore-line
}
}

0 comments on commit 149bdbb

Please sign in to comment.