コード例 #1
0
	/**
	 * Sets the parent model
	 * 
	 * @param	string|Atomik_Model_Builder	$parentModel
	 */
	public function setParentModel($parentModel)
	{
		$parent = Atomik_Model_Builder_Factory::get($parentModel);
		$type = $parent->getOption('inheritance', 'abstract');
		
		switch($type) {
			case 'none':
				return;
				
			case 'abstract':
				$this->_fields = array_merge($parent->getFields(), $this->_fields);
				$this->_options = array_merge($parent->getOptions(), $this->_options);
				foreach ($parent->getBehaviourBroker()->getBehaviours() as $behaviour) {
					$this->_behaviourBroker->addBehaviour(clone $behaviour);
				}
				foreach ($parent->getReferences() as $ref) {
					$this->addReference(clone $ref);
				}
				foreach ($parent->getLinks() as $link) {
					$this->addLink(clone $link);
				}
				break;
				
			case 'reference':
				$ref = new Atomik_Model_Builder_Reference('parent', Atomik_Model_Builder_Reference::HAS_PARENT);
				$ref->target = $parent;
				$ref->targetField = $parent->getPrimaryKeyField()->name;
				$ref->sourceField = $ref->target . '_' . $ref->targetField;
				$this->addReference($ref);
				break;
		}
		
		$this->_parentModelBuilder = $parent;
		$this->_inheritanceType = $type;
	}