Configuration Configuration is documented on a per-use case: if a class uses a certain value from the configuration object, it has to define its name and what the value is used for. This means decentralized configuration declarations that are nevertheless error checking and a centralized configuration object. Directives are divided into namespaces, indicating the major portion of functionality they cover (although there may be overlaps. Please consult the documentation in ConfigDef for more information on these namespaces. Since configuration is dependent on context, most of the internal classes require a configuration object to be passed as a parameter. However, a few make this optional: they will supply a default configuration object if none are passed. These classes are: HTMLPurifier::*, Generator::generateFromTokens and Lexer::tokenizeHTML. However, whenever a valid configuration object is defined, that object should be used.