/** * @covers BackBee\MetaData\MetaDataBag::jsonSerialize */ public function testJsonSerialize() { $meta1 = new MetaData('test1'); $meta1->setAttribute('name', 'test1'); $meta1->setAttribute('content', 'content of test1'); $meta1->setAttribute('lang', 'fr'); $meta2 = new MetaData('test2'); $meta2->setAttribute('name', 'test2'); $meta2->setAttribute('content', 'content of test2'); $meta2->setAttribute('lang', 'en'); $bag = new MetaDataBag(); $bag->add($meta1)->add($meta2); $expected = ['test1' => ['content' => 'content of test1', 'lang' => 'fr'], 'test2' => ['content' => 'content of test2', 'lang' => 'en']]; $this->assertEquals($expected, $bag->jsonSerialize()); }
/** * Returns computed metadata from provided $page. * * @param Page|NULL $page * * @return MetaDataBag */ public function resolve(Page $page = null) { if (null === $page || null === ($metadataBag = $page->getMetaData())) { $metadataBag = new MetaDataBag(); } if (!is_array($this->definitions)) { return $metadataBag; } foreach ($this->definitions as $name => $definition) { if (!is_array($definition)) { continue; } if (null === ($metadata = $metadataBag->get($name))) { $metadata = new MetaData($name); $metadataBag->add($metadata); } $this->parseDefinition($definition, $metadata, $page); } return clone $metadataBag; }