getAdvicesForFunctions() public method

Returns list of function advices for namespace
public getAdvicesForFunctions ( Go\ParserReflection\ReflectionFileNamespace $namespace, array $advisors ) : array
$namespace Go\ParserReflection\ReflectionFileNamespace
$advisors array List of advisor to match
return array
示例#1
0
 /**
  * Performs weaving of functions in the current namespace
  *
  * @param array|Advisor[] $advisors List of advisors
  * @param StreamMetaData $metadata Source stream information
  * @param ReflectionFileNamespace $namespace Current namespace for file
  *
  * @return boolean True if functions were processed, false otherwise
  */
 private function processFunctions(array $advisors, StreamMetaData $metadata, $namespace)
 {
     static $cacheDirSuffix = '/_functions/';
     $wasProcessedFunctions = false;
     $functionAdvices = $this->adviceMatcher->getAdvicesForFunctions($namespace, $advisors);
     $cacheDir = $this->cachePathManager->getCacheDir();
     if (!empty($functionAdvices) && $cacheDir) {
         $cacheDir = $cacheDir . $cacheDirSuffix;
         $fileName = str_replace('\\', '/', $namespace->getName()) . '.php';
         $functionFileName = $cacheDir . $fileName;
         if (!file_exists($functionFileName) || !$this->container->isFresh(filemtime($functionFileName))) {
             $dirname = dirname($functionFileName);
             if (!file_exists($dirname)) {
                 mkdir($dirname, $this->options['cacheFileMode'], true);
             }
             $source = new FunctionProxy($namespace, $functionAdvices);
             file_put_contents($functionFileName, $source, LOCK_EX);
             // For cache files we don't want executable bits by default
             chmod($functionFileName, $this->options['cacheFileMode'] & ~0111);
         }
         $content = 'include_once AOP_CACHE_DIR . ' . var_export($cacheDirSuffix . $fileName, true) . ';' . PHP_EOL;
         $metadata->source .= $content;
         $wasProcessedFunctions = true;
     }
     return $wasProcessedFunctions;
 }
 /**
  * Performs weaving of functions in the current namespace
  *
  * @param StreamMetaData $metadata Source stream information
  * @param ParsedFileNamespace $namespace Current namespace for file
  */
 private function processFunctions(StreamMetaData $metadata, $namespace)
 {
     $functionAdvices = $this->adviceMatcher->getAdvicesForFunctions($namespace);
     if ($functionAdvices && $this->options['cacheDir']) {
         $cacheDirSuffix = '/_functions/';
         $cacheDir = $this->options['cacheDir'] . $cacheDirSuffix;
         $fileName = str_replace('\\', '/', $namespace->getName()) . '.php';
         $functionFileName = $cacheDir . $fileName;
         if (!file_exists($functionFileName) || !$this->container->isFresh(filemtime($functionFileName))) {
             $dirname = dirname($functionFileName);
             if (!file_exists($dirname)) {
                 mkdir($dirname, 0770, true);
             }
             $source = new FunctionProxy($namespace, $functionAdvices);
             file_put_contents($functionFileName, $source);
         }
         $content = 'include_once AOP_CACHE_DIR . ' . var_export($cacheDirSuffix . $fileName, true) . ';' . PHP_EOL;
         $metadata->source .= $content;
     }
 }