Composes classes from roles inside collaborations.

This generator implements the idea of collaboration-based design outlined in Chapter 6 of "Feature-Oriented Software Product Lines" (see http://www.springer.com/de/book/9783642375200). Features are mapped to collaborations (see \FeaturePhp\Collaboration\Collaboration) which are in turn a set of roles. A \FeaturePhp\Collaboration\Role is the base code for a class or a class refinement. Depending on the feature selection, corresponding roles in the collaborations are composed into a set of refined files (see \FeaturePhp\File\RefinedFile) implementing the selected features. The concrete composition mechanism may differ from language to language (see \FeaturePhp\Collaboration\Composer).

package Default
inherited_from \FeaturePhp\Generator\FileGenerator

 Methods

Creates a collaboration generator.

__construct(\FeaturePhp\Generator\Settings $settings) 
inherited_from \FeaturePhp\Generator\FileGenerator::__construct()

Parameters

$settings

\FeaturePhp\Generator\Settings

Creates a generator.

__construct(\FeaturePhp\Generator\Settings $settings) 
Inherited

Parameters

$settings

\FeaturePhp\Generator\Settings

Registers an artifact whose corresponding feature is deselected.

addDeselectedArtifact(\FeaturePhp\Artifact\Artifact $artifact) 
Inherited

Parameters

$artifact

\FeaturePhp\Artifact\Artifact

Registers an artifact whose corresponding feature is selected.

addSelectedArtifact(\FeaturePhp\Artifact\Artifact $artifact) 
Inherited

Parameters

$artifact

\FeaturePhp\Artifact\Artifact

Generates the files for all registered artifacts.

generateFiles() : array<mixed,\FeaturePhp\File\File>
Inherited

If the files have already been generated, returns the cached files. The generator's log file is included.

Returns

array<mixed,\FeaturePhp\File\File>

Returns a map from all generator keys to class names.

getGeneratorMap() : array<mixed,string>
InheritedStatic

Returns

array<mixed,string>

Returns the collaboration generator's key.

getKey() : string
Static

Returns

string

Returns the generator's key.

getKey() : string
InheritedStatic

The key is the name used to identify the \FeaturePhp\Generator\Settings for a generator.

Returns

string

Returns all registered artifacts (selected and deselected).

getRegisteredArtifacts() : array<mixed,\FeaturePhp\Artifact\Artifact>
Inherited

Returns

array<mixed,\FeaturePhp\Artifact\Artifact>

Returns the generator's settings.

getSettings() : \FeaturePhp\Generator\Settings
Inherited

Returns

\FeaturePhp\Generator\Settings

Returns whether any artifacts are registered with the generator.

hasArtifacts() : boolean
Inherited

Returns

boolean

Returns tracing links for all registered artifacts.

trace() : array<mixed,\FeaturePhp\Artifact\TracingLink>
Inherited

Returns

array<mixed,\FeaturePhp\Artifact\TracingLink>

Generates the refined files.

_generateFiles() 
inherited_from \FeaturePhp\Generator\FileGenerator::_generateFiles()

Internal function for generating the files for all registered artifacts.

_generateFiles() 
Inherited

Returns whether a feature's artifact is selected.

isSelectedFeature(string $featureName) : boolean
Inherited

Parameters

$featureName

string

Returns

boolean

Adds a role from a file to a collaboration.

processFileSpecification(\FeaturePhp\Artifact\Artifact $artifact, \FeaturePhp\Specification\FileSpecification $fileSpecification) 
inherited_from \FeaturePhp\Generator\FileGenerator::processFileSpecification()

Parameters

$artifact

\FeaturePhp\Artifact\Artifact

$fileSpecification

\FeaturePhp\Specification\FileSpecification

Processes a file from a specification.

processFileSpecification(\FeaturePhp\Artifact\Artifact $artifact, \FeaturePhp\Specification\FileSpecification $fileSpecification) 
Inherited

Parameters

$artifact

\FeaturePhp\Artifact\Artifact

$fileSpecification

\FeaturePhp\Specification\FileSpecification

Processes a file from a specification.

_processFileSpecification(\FeaturePhp\Artifact\Artifact $artifact, \FeaturePhp\Specification\FileSpecification $fileSpecification) 
Inherited

Considers globally excluded files. Only exact file names are supported.

Parameters

$artifact

\FeaturePhp\Artifact\Artifact

$fileSpecification

\FeaturePhp\Specification\FileSpecification

Returns plain settings arrays with file or directory specifications.

getFileOrDirectorySettings(\FeaturePhp\Generator\Settings $settings, string $key) : array<mixed,array>
Inherited

Parameters

$settings

\FeaturePhp\Generator\Settings

$key

string

Returns

array<mixed,array>

Returns the class names of all generators.

getGenerators() : array<mixed,string>
InheritedStatic

Returns

array<mixed,string>

 Properties

 

artifacts with a corresponding deselected feature that specify this generator

$deselectedArtifacts : array<mixed,\FeaturePhp\Artifact\Artifact>

Default

 

cached files generated by this generator

$files : array<mixed,\FeaturePhp\File\File>

Default

 

the log file for this generator

$logFile : \FeaturePhp\File\LogFile

Default

 

artifacts with a corresponding selected feature that specify this generator

$selectedArtifacts : array<mixed,\FeaturePhp\Artifact\Artifact>

Default

 

the settings object with generator settings

$settings : \FeaturePhp\Generator\Settings

Default

   

all collaborations from selected artifacts

$collaborations : array<mixed,\FeaturePhp\Generator\FeaturePhp\Collaboration\Collaboration>

Default

 

list of globally excluded files

$exclude : array<mixed,string>

Default

 

ordered feature names to determine composition order

$featureOrder : array<mixed,string>

Default