/** * @param RecordSchema $record * @return string */ protected function renderNestedMany(RecordSchema $record) { $relationElement = new ClassElement($elementName = $this->createName($record->getName(), 'nested', 'relation')); //Clone schema from appropriate relation $relationElement->cloneSchema($relationClass = ManyToMany::class); $this->cleanElement($relationElement); $relationElement->setParent('\\' . $relationClass)->setInterfaces([]); $name = $record->getName(); $relationElement->replaceComments('Record|Record[]|RecordIterator', $this->helper('iterator', $name) . "|\\{$name}[]"); $relationElement->replaceComments(Record::class, $name); $relationElement->replaceComments("Record", '\\' . $name); $relationElement->replaceComments("Selector", $this->helper('selector', $name)); $relationElement->replaceComments("@return \$this", "@return \$this|{$elementName}|\\{$name}[]"); return $this->addClass($relationElement); }
/** * @param string $name * @return ClassElement */ protected function renderCompositor($name) { $element = new ClassElement($elementName = $this->createName($name, 'compositor')); $element->cloneSchema(Compositor::class)->setComment("Virtual Compositor for {$name}."); $element->setParent('\\' . Compositor::class)->setInterfaces([]); $this->cleanElement($element); $element->removeMethod('getParent'); //Mounting our class $element->replaceComments(Document::class, $name); $element->replaceComments("Document", '\\' . $name); $element->replaceComments("@return \$this", "@return \$this|{$elementName}|\\{$name}[]"); return $element; }