/** * _unserializeRecurser() * * This method will be used to traverse the depths of the structure * as needed to *unserialize* the profile from an xmlIterator * * @param SimpleXMLIterator $xmlIterator * @param \Zend\Tool\Project\Profile\Resource\Resource $resource */ protected function _unserializeRecurser(\SimpleXMLIterator $xmlIterator, Resource $resource = null) { foreach ($xmlIterator as $resourceName => $resourceData) { $contextName = $resourceName; $subResource = new Resource($contextName); $subResource->setProfile($this->_profile); if ($resourceAttributes = $resourceData->attributes()) { $attributes = array(); foreach ($resourceAttributes as $attrName => $attrValue) { $attributes[$attrName] = (string) $attrValue; } $subResource->setAttributes($attributes); } if ($resource) { $resource->append($subResource, false); } else { $this->_profile->append($subResource); } if ($this->_contextRepository->isOverwritableContext($contextName) == false) { $subResource->initializeContext(); } if ($xmlIterator->hasChildren()) { self::_unserializeRecurser($xmlIterator->getChildren(), $subResource); } } }
public function setup() { $this->_projectDirectory = __DIR__ . '/_files/project1/'; if (!file_exists($this->_projectDirectory)) { mkdir($this->_projectDirectory); } $this->_projectProfileFile = __DIR__ . '/_files/.zfproject.xml.orig'; $this->_removeProjectFiles(); Context\Repository::resetInstance(); $contextRegistry = Context\Repository::getInstance(); $contextRegistry->addContextsFromDirectory(__DIR__ . '/../../../../library/Zend/Tool/Project/Context/Zf/', 'Zend\\Tool\\Project\\Context\\Zf\\'); $this->_standardProfileFromData = new Profile(); $this->_standardProfileFromData->setAttribute('profileData', file_get_contents($this->_projectProfileFile)); $this->_standardProfileFromData->setAttribute('projectDirectory', $this->_projectDirectory); }
protected function _loadZfSystem() { $conextRegistry = Context\Repository::getInstance(); $conextRegistry->addContextsFromDirectory(__DIR__ . '/../../../../../library/Zend/Tool/Project/Context/Zf/', 'Zend\\Tool\\Project\\Context\\Zf\\'); }
/** * createResource() * * Method to create a resource with a given context with specific attributes * * @param string $context * @param array $attributes * @return \Zend\Tool\Project\Profile\Resource\Resource */ public function createResource($context, array $attributes = array()) { if (is_string($context)) { $contextRegistry = \Zend\Tool\Project\Context\Repository::getInstance(); if ($contextRegistry->hasContext($context)) { $context = $contextRegistry->getContext($context); } else { throw new Exception\InvalidArgumentException('Context by name ' . $context . ' was not found in the context registry.'); } } elseif (!$context instanceof \Zend\Tool\Project\Context) { throw new Exception\InvalidArgumentException('Context must be of type string or Zend\\Tool\\Project\\Context\\Interface.'); } $newResource = new Resource($context); if ($attributes) { $newResource->setAttributes($attributes); } /** * Interesting logic here: * * First set the parentResource (this will also be done inside append). This will allow * the initialization routine to change the appendability of the parent resource. This * is important to allow specific resources to be appendable by very specific sub-resources. */ $newResource->setParentResource($this); $newResource->initializeContext(); $this->append($newResource); return $newResource; }
/** * _loadContextClassesIntoRegistry() - This is called by the constructor * so that child providers can provide a list of contexts to load into the * context repository * * @param array $contextClasses */ private function _loadContextClassesIntoRegistry($contextClasses) { $registry = Context\Repository::getInstance(); foreach ($contextClasses as $contextClass) { $registry->addContextClass($contextClass); } }
/** * initializeContext() * * @return \Zend\Tool\Project\Profile\Resource\Resource */ public function initializeContext() { if ($this->_isContextInitialized) { return; } if (is_string($this->_context)) { $this->_context = \Zend\Tool\Project\Context\Repository::getInstance()->getContext($this->_context); } if (method_exists($this->_context, 'setResource')) { $this->_context->setResource($this); } if (method_exists($this->_context, 'init')) { $this->_context->init(); } $this->_isContextInitialized = true; return $this; }