protected function registerClassFiles(array $packages)
{
$includeClassesConfiguration = [];
if (isset($this->allSettings['Neos']['Flow']['object']['includeClasses'])) {
if (!is_array($this->allSettings['Neos']['Flow']['object']['includeClasses'])) {
throw new InvalidConfigurationTypeException('The setting "Neos.Flow.object.includeClasses" is invalid, it must be an array if set. Check the syntax in the YAML file.', 1422357285);
}
$includeClassesConfiguration = $this->allSettings['Neos']['Flow']['object']['includeClasses'];
}
$availableClassNames = ['' => ['DateTime']];
/** @var \Neos\Flow\Package\Package $package */
foreach ($packages as $packageKey => $package) {
if ($package->isObjectManagementEnabled() && (ComposerUtility::isFlowPackageType($package->getComposerManifest('type')) || isset($includeClassesConfiguration[$packageKey]))) {
foreach ($package->getClassFiles() as $fullClassName => $path) {
if (substr($fullClassName, -9, 9) !== 'Exception') {
$availableClassNames[$packageKey][] = $fullClassName;
}
}
if (isset($this->allSettings['Neos']['Flow']['object']['registerFunctionalTestClasses']) && $this->allSettings['Neos']['Flow']['object']['registerFunctionalTestClasses'] === true) {
foreach ($package->getFunctionalTestsClassFiles() as $fullClassName => $path) {
if (substr($fullClassName, -9, 9) !== 'Exception') {
$availableClassNames[$packageKey][] = $fullClassName;
}
}
}
if (isset($availableClassNames[$packageKey]) && is_array($availableClassNames[$packageKey])) {
$availableClassNames[$packageKey] = array_unique($availableClassNames[$packageKey]);
}
}
}
return $this->filterClassNamesFromConfiguration($availableClassNames, $includeClassesConfiguration);
}