リーグ/フラクタルを使用して、データを配列から PHP オブジェクトに変換しようとしています...次の方法で
final class StatusDeserializer extends AbstractTransformer
{
public function transform(Status $status)
{
return new StatusObject(
$status['name'],
$status['message']
);
}
}
私のオブジェクト定義
final class StatusObject
{
private $name;
private $message;
public function __construct($name, $message)
{
$this->name = $name;
$this->message = $message;
}
}
テスト実装はこちら
$data = [ 'name' => 'foo', 'message' => 'bar' ]
$this->fractalManager->createData($data, new StatusDeserializer());
しかし、私はこのエラーが発生します
Fatal error: Uncaught TypeError: Argument 1 passed to League\Fractal\Scope::filterFieldsets() must be of the type array, object given
編集 1
配列を Fractals コレクションにラップしようとしました。
$data = new Collection([ 'name' => 'foo', 'message' => 'bar' ]);
そしてLeague\Fractal\Scope
、StatusObject インスタンスの代わりに のインスタンスを返すようになりました
編集 2
->toArray() を追加すると、最初のエラーに戻りました
$this->fractalManager->createData($data, new StatusDeserializer())->toArray();
スクリーン ショットを参照してください: https://gmkr.io/s/5a0b755c683d0d77313ff0fa/0