/** * Modify class source * * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node * * @return void */ protected function writeCallToSourceFile(\Includes\Decorator\DataStructure\Graph\Classes $node) { $path = LC_DIR_CACHE_CLASSES . $node->getPath(); $content = \Includes\Utils\FileManager::read($path); $content .= PHP_EOL . '// Call static constructor' . PHP_EOL; $content .= '\\' . $node->getClass() . '::' . static::STATIC_CONSTRUCTOR_METHOD . '();'; \Includes\Utils\FileManager::write($path, $content); }
/** * Returns repository class for model class of current node * * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node * * @return string */ protected function getRepositoryClass(\Includes\Decorator\DataStructure\Graph\Classes $node) { $repositoryClass = null; if (!($node->isLowLevelNode() || $node->isTopLevelNode() || !$node->isDecorator())) { $children = $node->getChildren(); $repositoryClass = isset($children[0]) ? $this->getRepositoryClass($children[0]) : $this->getDefaultRepositoryClass(''); } else { $repositoryClass = \Includes\Utils\Converter::getPureClassName($node->getClass()); $repositoryClass = \Includes\Utils\Converter::prepareClassName(str_replace('\\Model\\', '\\Model\\Repo\\', $repositoryClass), false); if (!\XLite\Core\Operator::isClassExists($repositoryClass)) { $repositoryClass = $this->getDefaultRepositoryClass($repositoryClass); } } return $repositoryClass; }
/** * Condition to check for rewrite * * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node * * @return boolean */ protected function checkRewriteCondition(\Includes\Decorator\DataStructure\Graph\Classes $node) { return is_subclass_of($node->getClass(), '\\XLite\\Model\\AEntity'); }
/** * Return actual parent class name * * @param self $parent Node to get class name OPTIONAL * * @return string */ protected function getActualParentClassName(self $parent = null) { return $parent && ($class = $parent->getClass()) ? '\\' . $this->prepareClassName($class) : null; }
/** * Callback to search annotated PHP classes * * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node * * @return void */ public function checkClassForListChildTag(\Includes\Decorator\DataStructure\Graph\Classes $node) { if (!$node->isLowLevelNode() && preg_match('/^XLite(?:\\\\Module\\\\[A-Za-z0-9]+\\\\[A-Za-z0-9]+)?\\\\View\\\\/Ss', $node->getClass())) { $lists = $node->getTag(static::TAG_LIST_CHILD); if ($lists) { $data = array('child' => $node->getTopLevelNode()->getClass()); foreach ($lists as $tags) { $this->annotatedPHPCLasses[] = $data + $tags; } } } }
/** * Remove the module-related part from module controller class * * @param \Includes\Decorator\DataStructure\Graph\Classes $node Node to get and prepare class * * @return void */ protected function prepareModuleControllerClass(\Includes\Decorator\DataStructure\Graph\Classes $node) { return preg_replace(static::PATTERN, 'XLite\\\\Controller$2', $node->getClass()); }