コード例 #1
0
ファイル: ObjectFactory.php プロジェクト: GruppoMeta/Movio
 /**
  * @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;
 }