예제 #1
0
 private function generateClassInfo($sClassName)
 {
     $aClassLoader = ClassLoader::singleton();
     $sFilePath = $aClassLoader->searchClass($sClassName, Package::nocompiled);
     if (empty($sFilePath)) {
         return array();
     }
     $aFile = new File($sFilePath);
     $aInheritInfoDetector = InheritInfoDetector::singleton();
     $arrClassInfo = $aInheritInfoDetector->detect($aFile->openReader());
     return $arrClassInfo;
 }
예제 #2
0
 public function createClassLoader()
 {
     $aClassLoader = new ClassLoader();
     $aFolder = Folder::singleton();
     // 将 jecat 加入到 class loader 中
     $aClassLoader->addPackage('org\\jecat\\framework', \org\jecat\framework\CLASSPATH);
     // 将保存 数据表 实现类的临时目录加入到 class loader 中
     $aPackage = new ShadowClassPackage(Prototype::MODEL_IMPLEMENT_CLASS_BASE, Prototype::MODEL_IMPLEMENT_CLASS_NS, $aFolder->findFolder('/data/class/db/model', Folder::FIND_AUTO_CREATE));
     $aClassLoader->addPackage($aPackage);
     // 将保存 数据表原型 实现类的临时目录加入到 class loader 中
     $aPackage = new ShadowClassPackage(Prototype::PROTOTYPE_IMPLEMENT_CLASS_BASE, Prototype::PROTOTYPE_IMPLEMENT_CLASS_NS, $aFolder->findFolder('/data/class/db/prototype', Folder::FIND_AUTO_CREATE));
     $aClassLoader->addPackage($aPackage);
     return $aClassLoader;
 }
예제 #3
0
파일: AOP.php 프로젝트: JeCat/framework
 private function parseAspectClass($sAspectClass)
 {
     if (!($sClassFile = ClassLoader::singleton()->searchClass($sAspectClass, Package::nocompiled))) {
         throw new Exception("注册到AOP中的Aspace(%s)不存在; Aspace必须是一个有效的类", $sAspectClass);
     }
     $aClassCompiler = CompilerFactory::singleton()->create();
     $aTokenPool = $aClassCompiler->scan($sClassFile);
     $aClassCompiler->interpret($aTokenPool);
     if (!($aClassToken = $aTokenPool->findClass($sAspectClass))) {
         throw new Exception("根据 class path 搜索到class的定义文件:%s,但是该文件中没有定义:%s", array($sAspectClass, $sClassFile, $sAspectClass));
     }
     $this->aspects()->add(Aspect::createFromToken($aClassToken, $sClassFile));
 }