当前位置: 首页>>代码示例>>PHP>>正文


PHP ReflectionService::isClassUnconfigurable方法代码示例

本文整理汇总了PHP中TYPO3\Flow\Reflection\ReflectionService::isClassUnconfigurable方法的典型用法代码示例。如果您正苦于以下问题:PHP ReflectionService::isClassUnconfigurable方法的具体用法?PHP ReflectionService::isClassUnconfigurable怎么用?PHP ReflectionService::isClassUnconfigurable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TYPO3\Flow\Reflection\ReflectionService的用法示例。


在下文中一共展示了ReflectionService::isClassUnconfigurable方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: buildObjectConfigurations

 /**
  * Traverses through the given class and interface names and builds a base object configuration
  * for all of them. Then parses the provided extra configuration and merges the result
  * into the overall configuration. Finally autowires dependencies of arguments and properties
  * which can be resolved automatically.
  *
  * @param array $availableClassNamesByPackage An array of available class names, grouped by package key
  * @param array $rawObjectConfigurationsByPackages An array of package keys and their raw (ie. unparsed) object configurations
  * @return array<TYPO3\Flow\Object\Configuration\Configuration> Object configurations
  * @throws \TYPO3\Flow\Object\Exception\InvalidObjectConfigurationException
  */
 public function buildObjectConfigurations(array $availableClassNamesByPackage, array $rawObjectConfigurationsByPackages)
 {
     $objectConfigurations = array();
     foreach ($availableClassNamesByPackage as $packageKey => $classNames) {
         foreach ($classNames as $className) {
             $objectName = $className;
             if ($this->reflectionService->isClassUnconfigurable($className)) {
                 continue;
             }
             if ($this->reflectionService->isClassFinal($className)) {
                 continue;
             }
             if (interface_exists($className)) {
                 $interfaceName = $className;
                 $className = $this->reflectionService->getDefaultImplementationClassNameForInterface($interfaceName);
                 if ($className === FALSE) {
                     continue;
                 }
                 if ($this->reflectionService->isClassAnnotatedWith($interfaceName, 'TYPO3\\Flow\\Annotations\\Scope')) {
                     throw new \TYPO3\Flow\Object\Exception\InvalidObjectConfigurationException(sprintf('Scope annotations in interfaces don\'t have any effect, therefore you better remove it from %s in order to avoid confusion.', $interfaceName), 1299095595);
                 }
             }
             $rawObjectConfiguration = array('className' => $className);
             $rawObjectConfiguration = $this->enhanceRawConfigurationWithAnnotationOptions($className, $rawObjectConfiguration);
             $objectConfigurations[$objectName] = $this->parseConfigurationArray($objectName, $rawObjectConfiguration, 'automatically registered class');
             $objectConfigurations[$objectName]->setPackageKey($packageKey);
         }
     }
     foreach ($rawObjectConfigurationsByPackages as $packageKey => $rawObjectConfigurations) {
         foreach ($rawObjectConfigurations as $objectName => $rawObjectConfiguration) {
             $objectName = str_replace('_', '\\', $objectName);
             if (!is_array($rawObjectConfiguration)) {
                 throw new \TYPO3\Flow\Object\Exception\InvalidObjectConfigurationException('Configuration of object "' . $objectName . '" in package "' . $packageKey . '" is not an array, please check your Objects.yaml for syntax errors.', 1295954338);
             }
             $existingObjectConfiguration = isset($objectConfigurations[$objectName]) ? $objectConfigurations[$objectName] : NULL;
             if (isset($rawObjectConfiguration['className'])) {
                 $rawObjectConfiguration = $this->enhanceRawConfigurationWithAnnotationOptions($rawObjectConfiguration['className'], $rawObjectConfiguration);
             }
             $newObjectConfiguration = $this->parseConfigurationArray($objectName, $rawObjectConfiguration, 'configuration of package ' . $packageKey . ', definition for object "' . $objectName . '"', $existingObjectConfiguration);
             if (!isset($objectConfigurations[$objectName]) && !interface_exists($objectName, TRUE) && !class_exists($objectName, FALSE)) {
                 throw new \TYPO3\Flow\Object\Exception\InvalidObjectConfigurationException('Tried to configure unknown object "' . $objectName . '" in package "' . $packageKey . '". Please check your Objects.yaml.', 1184926175);
             }
             if ($objectName !== $newObjectConfiguration->getClassName() && !interface_exists($objectName, TRUE)) {
                 throw new \TYPO3\Flow\Object\Exception\InvalidObjectConfigurationException('Tried to set a differing class name for class "' . $objectName . '" in the object configuration of package "' . $packageKey . '". Setting "className" is only allowed for interfaces, please check your Objects.yaml."', 1295954589);
             }
             $objectConfigurations[$objectName] = $newObjectConfiguration;
             if ($objectConfigurations[$objectName]->getPackageKey() === NULL) {
                 $objectConfigurations[$objectName]->setPackageKey($packageKey);
             }
         }
     }
     $this->autowireArguments($objectConfigurations);
     $this->autowireProperties($objectConfigurations);
     return $objectConfigurations;
 }
开发者ID:sokunthearith,项目名称:Intern-Project-Week-2,代码行数:66,代码来源:ConfigurationBuilder.php

示例2: buildObjectConfigurations

 /**
  * Traverses through the given class and interface names and builds a base object configuration
  * for all of them. Then parses the provided extra configuration and merges the result
  * into the overall configuration. Finally autowires dependencies of arguments and properties
  * which can be resolved automatically.
  *
  * @param array $availableClassAndInterfaceNamesByPackage An array of available class names, grouped by package key
  * @param array $rawObjectConfigurationsByPackages An array of package keys and their raw (ie. unparsed) object configurations
  * @return array<TYPO3\Flow\Object\Configuration\Configuration> Object configurations
  * @throws InvalidObjectConfigurationException
  */
 public function buildObjectConfigurations(array $availableClassAndInterfaceNamesByPackage, array $rawObjectConfigurationsByPackages)
 {
     $objectConfigurations = array();
     $interfaceNames = array();
     foreach ($availableClassAndInterfaceNamesByPackage as $packageKey => $classAndInterfaceNames) {
         foreach ($classAndInterfaceNames as $classOrInterfaceName) {
             $objectName = $classOrInterfaceName;
             if ($this->reflectionService->isClassUnconfigurable($classOrInterfaceName)) {
                 continue;
             }
             if ($this->reflectionService->isClassFinal($classOrInterfaceName)) {
                 continue;
             }
             if (interface_exists($classOrInterfaceName)) {
                 $interfaceName = $classOrInterfaceName;
                 $implementationClassName = $this->reflectionService->getDefaultImplementationClassNameForInterface($interfaceName);
                 if (!isset($rawObjectConfigurationsByPackages[$packageKey][$interfaceName]) && $implementationClassName === FALSE) {
                     continue;
                 }
                 if ($this->reflectionService->isClassAnnotatedWith($interfaceName, \TYPO3\Flow\Annotations\Scope::class)) {
                     throw new InvalidObjectConfigurationException(sprintf('Scope annotations in interfaces don\'t have any effect, therefore you better remove it from %s in order to avoid confusion.', $interfaceName), 1299095595);
                 }
                 $interfaceNames[$interfaceName] = TRUE;
             } else {
                 $implementationClassName = $classOrInterfaceName;
             }
             $rawObjectConfiguration = array('className' => $implementationClassName);
             $rawObjectConfiguration = $this->enhanceRawConfigurationWithAnnotationOptions($classOrInterfaceName, $rawObjectConfiguration);
             $objectConfigurations[$objectName] = $this->parseConfigurationArray($objectName, $rawObjectConfiguration, 'automatically registered class');
             $objectConfigurations[$objectName]->setPackageKey($packageKey);
         }
     }
     foreach ($rawObjectConfigurationsByPackages as $packageKey => $rawObjectConfigurations) {
         foreach ($rawObjectConfigurations as $objectName => $rawObjectConfiguration) {
             $objectName = str_replace('_', '\\', $objectName);
             if (!is_array($rawObjectConfiguration)) {
                 throw new InvalidObjectConfigurationException('Configuration of object "' . $objectName . '" in package "' . $packageKey . '" is not an array, please check your Objects.yaml for syntax errors.', 1295954338);
             }
             $existingObjectConfiguration = isset($objectConfigurations[$objectName]) ? $objectConfigurations[$objectName] : NULL;
             if (isset($rawObjectConfiguration['className'])) {
                 $rawObjectConfiguration = $this->enhanceRawConfigurationWithAnnotationOptions($rawObjectConfiguration['className'], $rawObjectConfiguration);
             }
             $newObjectConfiguration = $this->parseConfigurationArray($objectName, $rawObjectConfiguration, 'configuration of package ' . $packageKey . ', definition for object "' . $objectName . '"', $existingObjectConfiguration);
             if (!isset($objectConfigurations[$objectName]) && !interface_exists($objectName, TRUE) && !class_exists($objectName, FALSE)) {
                 throw new InvalidObjectConfigurationException('Tried to configure unknown object "' . $objectName . '" in package "' . $packageKey . '". Please check your Objects.yaml.', 1184926175);
             }
             if ($objectName !== $newObjectConfiguration->getClassName() && !interface_exists($objectName, TRUE)) {
                 throw new InvalidObjectConfigurationException('Tried to set a differing class name for class "' . $objectName . '" in the object configuration of package "' . $packageKey . '". Setting "className" is only allowed for interfaces, please check your Objects.yaml."', 1295954589);
             }
             if (empty($newObjectConfiguration->getClassName()) && empty($newObjectConfiguration->getFactoryObjectName())) {
                 $count = count($this->reflectionService->getAllImplementationClassNamesForInterface($objectName));
                 $hint = $count ? 'It seems like there is no class which implements that interface, maybe the object configuration is obsolete?' : sprintf('There are %s classes implementing that interface, therefore you must specify a specific class in your object configuration.', $count);
                 throw new InvalidObjectConfigurationException('The object configuration for "' . $objectName . '" in the object configuration of package "' . $packageKey . '" lacks a "className" entry. ' . $hint, 1422566751);
             }
             $objectConfigurations[$objectName] = $newObjectConfiguration;
             if ($objectConfigurations[$objectName]->getPackageKey() === NULL) {
                 $objectConfigurations[$objectName]->setPackageKey($packageKey);
             }
         }
     }
     // If an implementation class could be determined for an interface object configuration, set the scope for the
     // interface object configuration to the scope found in the implementation class configuration:
     foreach (array_keys($interfaceNames) as $interfaceName) {
         $implementationClassName = $objectConfigurations[$interfaceName]->getClassName();
         if ($implementationClassName !== '' && isset($objectConfigurations[$implementationClassName])) {
             $objectConfigurations[$interfaceName]->setScope($objectConfigurations[$implementationClassName]->getScope());
         }
     }
     $this->autowireArguments($objectConfigurations);
     $this->autowireProperties($objectConfigurations);
     return $objectConfigurations;
 }
开发者ID:nlx-sascha,项目名称:flow-development-collection,代码行数:83,代码来源:ConfigurationBuilder.php


注:本文中的TYPO3\Flow\Reflection\ReflectionService::isClassUnconfigurable方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。