FOF30\Hal\Document::addEmbedded PHP Метод

addEmbedded() публичный Метод

Add an embedded document
public addEmbedded ( string $rel, Document $document, boolean $overwrite = true ) : boolean
$rel string The relation of the embedded document to its container document
$document Document The document to add
$overwrite boolean Should I overwrite existing data with the same relation?
Результат boolean
    public function addEmbedded($rel, Document $document, $overwrite = true)
    {
        if (!array_key_exists($rel, $this->_embedded) || $overwrite) {
            $this->_embedded[$rel] = $document;
            return true;
        } elseif (array_key_exists($rel, $this->_embedded) && !$overwrite) {
            if (!is_array($this->_embedded[$rel])) {
                $this->_embedded[$rel] = array($this->_embedded[$rel]);
            }
            $this->_embedded[$rel][] = $document;
            return true;
        } else {
            return false;
        }
    }

Usage Example

Пример #1
0
 /**
  * @covers FOF30\Hal\Document::getEmbedded
  */
 public function testGetEmbedded()
 {
     $data = array('test1' => 'one', 'test2' => 'two', 'testArray' => array('testUno' => 'uno', 'testDue' => 'Due'));
     $document = new Document($data);
     $newDocument = new Document(array('newDocData' => 'something something something data'));
     // Add an embedded document
     $document->addEmbedded('childDoc', $newDocument);
     $embedded = $this->getObjectAttribute($document, '_embedded');
     $this->assertEquals($newDocument, $embedded['childDoc'], 'Line: ' . __LINE__ . '.');
     // Append another embedded document
     $otherDocument = new Document(array('otherDocData' => 'other data'));
     $document->addEmbedded('childDoc', $otherDocument, true);
     $allEmbedded = $this->getObjectAttribute($document, '_embedded');
     $testEmbedded = $document->getEmbedded();
     $this->assertEquals($allEmbedded, $testEmbedded, 'Line: ' . __LINE__ . '.');
     $testEmbedded = $document->getEmbedded('childDoc');
     $this->assertEquals($allEmbedded['childDoc'], $testEmbedded, 'Line: ' . __LINE__ . '.');
 }