コード例 #1
0
 /**
  * Devuelve la lista de los nombres de todas las clases de modelo de una aplicacion,
  * incluso si estan en subdirectorios.
  */
 public static function getModelClasses($app)
 {
     // el directorio del modelo es fijo, pero lo tengo que sacar de una configuracion, no hardcoded aca.
     //$apps = PackageNames::getAppNames();
     $classNames = array();
     $package = "{$app}/model";
     // TODO: si hay subdirectorios, devolverlos tambien.
     $model_path = YuppConventions::getModelPath($package);
     // La aplicacion puede no tener directorio de model
     //if (file_exists($model_path))
     //{
     //   $_classNames = FileSystem::getFileNames($model_path, PackageNames::MODEL_FILE_REGEXP, array( PackageNames::MODEL_CLASS_GROUP )); // Todos los php del paquete utils, idem anterior, ahora sin el "utils."
     //   $classNames = array_merge($classNames, $_classNames);
     //}
     if (file_exists($model_path)) {
         $classNamesRecur = self::getModelClassesRecursive($model_path);
         $classNames = array_merge($classNames, $classNamesRecur);
     }
     // Levanta el directorio y los nombres de las clases.
     // Grupo 1 es el nombre de la aplicacion
     // Grupo 2 es el nombre de la clase
     // TODO: LA REGEXP DEL PAQUETE DE MODELO ME LO DEBERIA DAR UNA CLASE RESPONSABLE DE SABER CUALES SON LAS REGEXPS DE LOS PAQUETES DESTACADOS Y DADO UNA RUTA DE PAQUETES SABER DE QUE TIPO ES (modulos, core, modelo, vistas, acciones, etc.)
     // Los nombres estan codificados segun algun estandar (a definir) y se puede sacar el nombre de la clase del nombre del archivo.
     // NOMBRES: modelDir/app.ClassName.php
     return $classNames;
 }
コード例 #2
0
ファイル: core.YuppLoader.class.php プロジェクト: fkali/yupp
 /**
  * Hace el include en las clases ya cargadas.
  * En ludar de tener que ir al filesystem para cargar las clases del modelo,
  * las carga de la memoria.
  */
 public static function refresh()
 {
     $cl = YuppLoader::getInstance();
     // FIXME: no recarga las clases del modelo que estan en subdirectorios!
     foreach ($cl->loadedClasses as $classInfo) {
         $package = $classInfo['package'];
         $path = ".";
         if (PackageNames::isModelPackage($package)) {
             $path = YuppConventions::getModelPath($package);
         } else {
             $path = strtr($package, ".", "/");
         }
         $incPath = $path . "/" . $classInfo['filename'];
         if (!is_file($incPath)) {
             // FIXME: si se tira excepcion, me pasa que al mover archivos me da errores y tengo que borrar la sesion.
             //        igualmente en este caso deberia avisar de alguna forma de que no se encuentra una ruta de inclusion,
             //        por ejemplo haciendo log a disco. Tambien se podria sacar la entrada incorrecta.
             //throw new Exception("YuppLoader::refresh() - ruta de inclusion errada ($incPath)");
         } else {
             include_once $incPath;
         }
     }
 }