public function fromClass($class, $dir = '')
 {
     $classInfo = new RecessReflectionClass($class);
     $this->docComment = $classInfo->getDocComment();
     $this->file = $classInfo->getFileName();
     $package = Library::getPackage($class);
     if ($dir != '') {
         if (strpos($dir, '/' . str_replace('.', '/', $package)) !== 0) {
             throw new RecessException('The class: ' . $class . ' has been imported incorectly with ' . $package . '.' . $class . '. The real location is: ' . $dir, get_defined_vars());
         }
     }
     if ($package != '') {
         $packageReflector = new RecessReflectorPackage();
         $packageReflector->name = $package;
         if ($packageReflector->exists()) {
             $this->setPackage($packageReflector);
         } else {
             $packageReflector->insert();
             $this->setPackage($packageReflector);
         }
     }
     $this->save();
     $parent = $classInfo->getParentClass();
     if ($parent != null) {
         $parentReflectorClass = new RecessReflectorClass();
         $parentReflectorClass->name = $parent->name;
         $exists = $parentReflectorClass->find()->first();
         if (!$exists) {
             $parentReflectorClass->fromClass($parent->name);
             $this->setParent($parentReflectorClass);
         } else {
             $this->setParent($exists);
         }
     }
 }
 function getClasses()
 {
     $packageReflector = new RecessReflectorClass();
     $packageReflector->packageId = $this->id;
     if ($packageReflector->exists()) {
         return $packageReflector->all();
     }
     return array();
 }
 private function indexClass($fullyQualifiedClassName, $dir)
 {
     if (!Library::classExists($fullyQualifiedClassName)) {
         return false;
     }
     $model = Library::getClassName($fullyQualifiedClassName);
     $reflectorClass = new RecessReflectorClass();
     $reflectorClass->name = $model;
     if (!$reflectorClass->exists()) {
         $reflectorClass->fromClass($model, $dir);
     }
     return $reflectorClass;
 }