public static function getAppForModelClass($classname) { $apps = PackageNames::getAppNames(); foreach ($apps as $app) { // FIXME: si la clase esta definida en un subdir de /model no la encuentra. // TODO: que el nombre de la clase se obtenga desde las convenciones, la path tambien. $path = "./apps/{$app}/model/{$app}.model.{$classname}.class.php"; if (file_exists($path)) { return $app; } } // Puede ser que este en un subdir y no la encuentre... return NULL; // No se encontro }
/** * Devuelve una lista con los nombres de las aplicaciones instaladas localmente. */ public function getAppNames() { return PackageNames::getAppNames(); }
/** * 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; } } }