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 |
Результат | array |
/** * 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; } }