本文整理汇总了PHP中TYPO3\Flow\Reflection\ReflectionService::getClassesContainingMethodsAnnotatedWith方法的典型用法代码示例。如果您正苦于以下问题:PHP ReflectionService::getClassesContainingMethodsAnnotatedWith方法的具体用法?PHP ReflectionService::getClassesContainingMethodsAnnotatedWith怎么用?PHP ReflectionService::getClassesContainingMethodsAnnotatedWith使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TYPO3\Flow\Reflection\ReflectionService
的用法示例。
在下文中一共展示了ReflectionService::getClassesContainingMethodsAnnotatedWith方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: reduceTargetClassNames
/**
* This method is used to optimize the matching process.
*
* @param \TYPO3\Flow\Aop\Builder\ClassNameIndex $classNameIndex
* @return \TYPO3\Flow\Aop\Builder\ClassNameIndex
*/
public function reduceTargetClassNames(\TYPO3\Flow\Aop\Builder\ClassNameIndex $classNameIndex)
{
$classNames = $this->reflectionService->getClassesContainingMethodsAnnotatedWith($this->annotation);
$annotatedIndex = new \TYPO3\Flow\Aop\Builder\ClassNameIndex();
$annotatedIndex->setClassNames($classNames);
return $classNameIndex->intersect($annotatedIndex);
}
开发者ID:robertlemke,项目名称:flow-development-collection,代码行数:13,代码来源:PointcutMethodAnnotatedWithFilter.php
示例2: compileStaticMethods
/**
* Compile the result of methods marked with CompileStatic into the proxy class
*
* @param string $className
* @param \TYPO3\Flow\Object\Proxy\ProxyClass $proxyClass
* @return void
*/
protected function compileStaticMethods($className, $proxyClass)
{
if ($this->classesWithCompileStaticAnnotation === null) {
$this->classesWithCompileStaticAnnotation = array_flip($this->reflectionService->getClassesContainingMethodsAnnotatedWith(\TYPO3\Flow\Annotations\CompileStatic::class));
}
if (!isset($this->classesWithCompileStaticAnnotation[$className])) {
return;
}
$methodNames = get_class_methods($className);
foreach ($methodNames as $methodName) {
if ($this->reflectionService->isMethodStatic($className, $methodName) && $this->reflectionService->isMethodAnnotatedWith($className, $methodName, \TYPO3\Flow\Annotations\CompileStatic::class)) {
$compiledMethod = $proxyClass->getMethod($methodName);
$value = call_user_func(array($className, $methodName), $this->objectManager);
$compiledResult = var_export($value, true);
$compiledMethod->setMethodBody('return ' . $compiledResult . ';');
}
}
}
示例3: getAffectedClassNames
/**
* @param array $classesSelector
* @return array
*/
protected function getAffectedClassNames(array $classesSelector)
{
if (isset($classesSelector['parentClassName'])) {
$affectedClassNames = $this->reflectionService->getAllSubClassNamesForClass($classesSelector['parentClassName']);
} elseif (isset($classesSelector['interface'])) {
$affectedClassNames = $this->reflectionService->getAllImplementationClassNamesForInterface($classesSelector['interface']);
} elseif (isset($classesSelector['classesContainingMethodsAnnotatedWith'])) {
$affectedClassNames = $this->reflectionService->getClassesContainingMethodsAnnotatedWith($classesSelector['classesContainingMethodsAnnotatedWith']);
} else {
$affectedClassNames = $this->reflectionService->getAllClassNames();
}
foreach ($affectedClassNames as $index => $className) {
if ($this->reflectionService->isClassAbstract($className) && (!isset($classesSelector['includeAbstractClasses']) || $classesSelector['includeAbstractClasses'] === FALSE)) {
unset($affectedClassNames[$index]);
} elseif (isset($classesSelector['classNamePattern']) && preg_match($classesSelector['classNamePattern'], $className) === 0) {
unset($affectedClassNames[$index]);
}
}
return $affectedClassNames;
}