#
# Object configuration for the Flow Framework
#

Neos:
  Flow:
    object:
      # If enabled, the Object Manager will - additionally to the class files found
      # in the "Classes" directory - also register class files found in the directory
      # "Tests/Functional/". Enabling this feature obviously only makes sense in a
      # testing context.
      registerFunctionalTestClasses: false

      # Explicitly include classes to object management (Reflection and Configuration building).
      # Sequence of package keys with an array of regular expressions.
      # The package key must match the key found in PackageStates.php regarding case.
      #
      # Each regular expression will be tested against the list of fully qualified
      # class names in the package and classes will be included if matching.
      #
      # For Flow packages (type = "neos-*") this setting is not required as they're
      # reflected by default. You can however exclude specific (or all) classes from Flow packages
      # by specifying corresponding regular expressions that don't match classes to exclude.
      #
      includeClasses: [ ]

      dependencyInjection:

        # Explicitly exclude classes from constructor autowiring.
        #
        # This setting accepts an array of regular expressions, each matching one or more fully
        # qualified class names.
        #
        # Classes of scope prototype which expect objects to be passed to their constructor
        # are usually considered for autowiring which results in a proxy class being generated.
        # This option allows to exclude classes from this process. This is useful for classes
        # like data transfer objects, read models, commands, events and value objects which
        # usually don't rely on dependency injection.
        #
        # Flow cannot reliably detect wether a prototype class depends on autowiring for
        # constructor arguments or not. Use this option to optimize your application to avoid
        # the small but measurable overhead of proxy generation for those kinds of classes.
        #
        # Note that if there are other reasons than constructor injection which require a
        # proxy class to be generated, the proxy class will be generated no matter what.
        #
        # Example:
        #  excludeClassesFromConstructorAutowiring:
        #  - '^Neos\\SomePackage\\Domain\\.*\\Command\\.*$'
        #  - '^Neos\\SomePackage\\Domain\\.*\\Event\\.*$'
        #  - '^Neos\\SomePackage\\ValueObjects\\SomeSpecificValueObject$'
        #
        excludeClassesFromConstructorAutowiring: []
