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); } } }
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; }