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