protected function generateAdviceCalltype(GenerateStat $aStat, Advice $aAdvice) { // 只有在 目标函数 和 切入函数同时为 动态方法时,才通过 $this-> 调用 advice return (!$aAdvice->isStatic() and !$aStat->aExecutePoint->staticToken()) ? '$this->' : 'self::'; }
/** * 生成织入代码 */ protected function generateAdviceDefine(Advice $aAdvice, GenerateStat $aStat, $aNextAroundAdvice = null) { $sCode = ''; // static if ($aAdvice->isStatic()) { $sCode .= 'static '; } // public, protected, private $sCode .= $aAdvice->access() . ' '; // function and name $sCode .= 'function ' . $this->generateAdviceWeavedFunctionName($aStat, $aAdvice) . "({$aStat->sAdviceDefineArgvsLit})\r\n"; // body $sCode .= "\t{\r\n"; $sCode .= $this->compileAdviceCode($aStat, $aAdvice, $aNextAroundAdvice); $sCode .= "\r\n\t}"; return new Token(T_STRING, "\r\n\r\n\t" . $sCode); }