本文整理汇总了PHP中TYPO3\Flow\Configuration\ConfigurationManager::getAvailableConfigurationTypes方法的典型用法代码示例。如果您正苦于以下问题:PHP ConfigurationManager::getAvailableConfigurationTypes方法的具体用法?PHP ConfigurationManager::getAvailableConfigurationTypes怎么用?PHP ConfigurationManager::getAvailableConfigurationTypes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TYPO3\Flow\Configuration\ConfigurationManager
的用法示例。
在下文中一共展示了ConfigurationManager::getAvailableConfigurationTypes方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: validateSingleType
/**
* Validate a single configuration type
*
* @param string $configurationType the configuration typr to validate
* @param string $path configuration path to validate, or NULL.
* @param array $loadedSchemaFiles will be filled with a list of loaded schema files
* @return \TYPO3\Flow\Error\Result
* @throws Exception\SchemaValidationException
*/
protected function validateSingleType($configurationType, $path, &$loadedSchemaFiles)
{
$availableConfigurationTypes = $this->configurationManager->getAvailableConfigurationTypes();
if (in_array($configurationType, $availableConfigurationTypes) === FALSE) {
throw new Exception\SchemaValidationException('The configuration type "' . $configurationType . '" was not found. Only the following configuration types are supported: "' . implode('", "', $availableConfigurationTypes) . '"', 1364984886);
}
$configuration = $this->configurationManager->getConfiguration($configurationType);
// find schema files for the given type and path
$schemaFileInfos = array();
$activePackages = $this->packageManager->getActivePackages();
foreach ($activePackages as $package) {
$packageKey = $package->getPackageKey();
$packageSchemaPath = \TYPO3\Flow\Utility\Files::concatenatePaths(array($package->getResourcesPath(), 'Private/Schema'));
if (is_dir($packageSchemaPath)) {
$packageSchemaFiles = \TYPO3\Flow\Utility\Files::readDirectoryRecursively($packageSchemaPath, '.schema.yaml');
foreach ($packageSchemaFiles as $schemaFile) {
$schemaName = substr($schemaFile, strlen($packageSchemaPath) + 1, -strlen('.schema.yaml'));
$schemaNameParts = explode('.', str_replace('/', '.', $schemaName), 2);
$schemaType = $schemaNameParts[0];
$schemaPath = isset($schemaNameParts[1]) ? $schemaNameParts[1] : NULL;
if ($schemaType === $configurationType && ($path === NULL || strpos($schemaPath, $path) === 0)) {
$schemaFileInfos[] = array('file' => $schemaFile, 'name' => $schemaName, 'path' => $schemaPath, 'packageKey' => $packageKey);
}
}
}
}
if (count($schemaFileInfos) === 0) {
throw new Exception\SchemaValidationException('No schema files found for configuration type "' . $configurationType . '"' . ($path !== NULL ? ' and path "' . $path . '".' : '.'), 1364985056);
}
$result = new Result();
foreach ($schemaFileInfos as $schemaFileInfo) {
$loadedSchemaFiles[] = $schemaFileInfo['file'];
if ($schemaFileInfo['path'] !== NULL) {
$data = \TYPO3\Flow\Utility\Arrays::getValueByPath($configuration, $schemaFileInfo['path']);
} else {
$data = $configuration;
}
if (empty($data)) {
$result->addNotice(new Notice('No configuration found, skipping schema "%s".', 1364985445, array(substr($schemaFileInfo['file'], strlen(FLOW_PATH_ROOT)))));
} else {
$parsedSchema = \Symfony\Component\Yaml\Yaml::parse($schemaFileInfo['file']);
$validationResultForSingleSchema = $this->schemaValidator->validate($data, $parsedSchema);
if ($schemaFileInfo['path'] !== NULL) {
$result->forProperty($schemaFileInfo['path'])->merge($validationResultForSingleSchema);
} else {
$result->merge($validationResultForSingleSchema);
}
}
}
return $result;
}
示例2: indexAction
/**
* @param string $type
* @return void
*/
public function indexAction($type = 'Settings')
{
$availableConfigurationTypes = $this->configurationManager->getAvailableConfigurationTypes();
$this->view->assignMultiple(array('type' => $type, 'availableConfigurationTypes' => $availableConfigurationTypes));
if (in_array($type, $availableConfigurationTypes)) {
$this->view->assign('configuration', $this->configurationManager->getConfiguration($type));
try {
$this->view->assign('validationResult', $this->configurationSchemaValidator->validate($type));
} catch (\TYPO3\Flow\Configuration\Exception\SchemaValidationException $exception) {
$this->addFlashMessage($exception->getMessage(), 'An error occurred during validation of the configuration.', Message::SEVERITY_ERROR, array(), 1412373972);
}
} else {
$this->addFlashMessage('Configuration type not found.', '', Message::SEVERITY_ERROR, array(), 1412373998);
}
}
示例3: listTypesCommand
/**
* List registered configuration types
*
* @return void
*/
public function listTypesCommand()
{
$this->outputLine('The following configuration types are registered:');
$this->outputLine();
foreach ($this->configurationManager->getAvailableConfigurationTypes() as $type) {
$this->outputFormatted('- %s', array($type));
}
}
示例4: buildPropertyInjectionCode
/**
* Builds the code necessary to inject setter based dependencies.
*
* @param Configuration $objectConfiguration (needed to produce helpful exception message)
* @return string The built code
* @throws \TYPO3\Flow\Object\Exception\UnknownObjectException
*/
protected function buildPropertyInjectionCode(Configuration $objectConfiguration)
{
$commands = array();
$injectedProperties = array();
foreach ($objectConfiguration->getProperties() as $propertyName => $propertyConfiguration) {
/* @var $propertyConfiguration ConfigurationProperty */
if ($propertyConfiguration->getAutowiring() === Configuration::AUTOWIRING_MODE_OFF) {
continue;
}
$propertyValue = $propertyConfiguration->getValue();
switch ($propertyConfiguration->getType()) {
case ConfigurationProperty::PROPERTY_TYPES_OBJECT:
if ($propertyValue instanceof Configuration) {
$commands = array_merge($commands, $this->buildPropertyInjectionCodeByConfiguration($objectConfiguration, $propertyName, $propertyValue));
} else {
$commands = array_merge($commands, $this->buildPropertyInjectionCodeByString($objectConfiguration, $propertyConfiguration, $propertyName, $propertyValue));
}
break;
case ConfigurationProperty::PROPERTY_TYPES_STRAIGHTVALUE:
if (is_string($propertyValue)) {
$preparedSetterArgument = '\'' . str_replace('\'', '\\\'', $propertyValue) . '\'';
} elseif (is_array($propertyValue)) {
$preparedSetterArgument = var_export($propertyValue, true);
} elseif (is_bool($propertyValue)) {
$preparedSetterArgument = $propertyValue ? 'TRUE' : 'FALSE';
} else {
$preparedSetterArgument = $propertyValue;
}
$commands[] = 'if (\\TYPO3\\Flow\\Reflection\\ObjectAccess::setProperty($this, \'' . $propertyName . '\', ' . $preparedSetterArgument . ') === FALSE) { $this->' . $propertyName . ' = ' . $preparedSetterArgument . ';}';
break;
case ConfigurationProperty::PROPERTY_TYPES_CONFIGURATION:
$configurationType = $propertyValue['type'];
if (!in_array($configurationType, $this->configurationManager->getAvailableConfigurationTypes())) {
throw new \TYPO3\Flow\Object\Exception\UnknownObjectException('The configuration injection specified for property "' . $propertyName . '" in the object configuration of object "' . $objectConfiguration->getObjectName() . '" refers to the unknown configuration type "' . $configurationType . '".', 1420736211);
}
$commands = array_merge($commands, $this->buildPropertyInjectionCodeByConfigurationTypeAndPath($objectConfiguration, $propertyName, $configurationType, $propertyValue['path']));
break;
}
$injectedProperties[] = $propertyName;
}
if (count($commands) > 0) {
$commandString = "\t\t" . implode("\n\t\t", $commands) . "\n";
$commandString .= '$this->Flow_Injected_Properties = ' . var_export($injectedProperties, true) . ";\n";
} else {
$commandString = '';
}
return $commandString;
}