/** * @param $className * @param $application * @param $parent * @param $tagName * @param $id * @param string $originalId * @param bool $skipImport * @param string $mode * @return mixed */ static function &createComponent($className, &$application, &$parent, $tagName, $id, $originalId = '', $skipImport = false, $mode = '') { $className = org_glizy_ObjectFactory::resolveClass($className); $componentClassName = str_replace('.', '_', $className); if (!class_exists($componentClassName)) { // controlla se il file className.xml esiste sia nelle classi dell'applicazione // si in quelle di sistema // se esiste: // deve compilarlo e caricarlo // se non esiste // deve dare un messaggio di errore // TODO // in questo modo non carica eventuali classi dal core // // TODO // deve essere prevista anche la compilazione dei models se sono in PHP e non in XML // $fileName = glz_findClassPath($className); $pathInfo = pathinfo($fileName); if (empty($pathInfo['basename'])) { trigger_error($className . ': component file not found', E_USER_ERROR); } if ($pathInfo['extension'] == 'xml') { /** @var org_glizy_compilers_Component $compiler */ $compiler = org_glizy_ObjectFactory::createObject('org.glizy.compilers.Component'); $compiledFileName = $compiler->verify($fileName, array('originalClassName' => $className, 'mode' => $mode)); require_once $compiledFileName; $componentClassName = glz_basename($compiledFileName); } else { require_once $fileName; } $newObj = new $componentClassName($application, $parent, $tagName, $id, $originalId, $skipImport); return $newObj; } $newObj = new $componentClassName($application, $parent, $tagName, $id, $originalId, $skipImport); return $newObj; }