/** * Creates a new MApplication instance with the specified delegate class * If no delegate class is specified the system looks for the 'manifest.xml' * file inside the 'resources' folder and parses it * * @param MString $delegateClass A string containing the fully qualified class * name for this application's delegate, or null. * * @return MApplication The MApplication instance which has just been created */ public function __construct(MString $delegateClass = null) { parent::__construct(); $this->_delegate = null; $this->_errorViewControllerClass = null; $this->_defaultNamespace = null; $this->_rootViewController = null; $this->_commandName = null; $this->_commandLineArguments = null; if (!$this->isRoutingEnabled()) { $this->enableRouting(); $redirect = new MHTTPResponse(MHTTPResponse::RESPONSE_FOUND); $redirect->addHeader(S("Location"), MHTTPRequest()->url()); MDie($redirect); } if ($delegateClass) { $this->_delegate = MObject::newInstanceOfClass($delegateClass); } else { if (MFile::fileExists("resources/manifest.xml")) { $xmlManifest = simplexml_load_file("resources/manifest.xml"); $this->_delegate = MObject::newInstanceOfClassWithParameters(S($xmlManifest['delegate']), A($this)); $this->_errorViewControllerClass = S($xmlManifest['errorClass']); try { $this->_defaultNamespace = MApplicationNamespace::parseFromXMLElement($xmlManifest, S("application")); } catch (Exception $e) { throw new MParseErrorException(S("resources/manifest.xml"), null, null, $e); } } else { $this->_delegate = new MApplicationDelegate($this); } } MApplication::$_application = $this; }