Example #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;
 }
Example #2
0
 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));
 }