private static function doInstantiate($className) { if (!ClassCache::exists($className)) { throw new SingletonException("Cannot create singleton for class {$className}: class does not exist."); } $name = new $className(); self::$instances[$className] = $name; }
public static function get($className) { if (!ClassCache::exists($className)) { throw new NoSuchBeanException($className); } if (self::isRequestBean($className)) { return self::getOrCreateRequestBean($className); } if (self::isSessionBean($className)) { return self::getOrCreateSessionBean($className); } if (self::isApplicationBean($className)) { return self::getOrCreateApplicationBean($className); } throw new NoSuchBeanException($className); }
private function parseNode(XmlElement $node) { $className = ucfirst($node->getName()); if (!ClassCache::exists($className)) { $instance = new HtmlComponent($node->getName(), $node->getText(), $node->getAttributes()); } else { if (!ClassUtil::isSubclassOf($className, "Component")) { throw new ComponentNotExistsException($className); } $instance = new $className(); foreach ($node->getAttributes() as $attrName => $attrValue) { $setterName = "set" . ucfirst($attrName); $setter = new ReflectionMethod($instance, $setterName); $setter->invoke($instance, (string) $attrValue); } } foreach ($node->getChildren() as $child) { $instance->addChild($this->parseNode($child)); } return $instance; }