```
██████╗  ██████╗ ██╗    ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║    ██║██╔════╝██╔══██╗
██████╔╝██║   ██║██║ █╗ ██║█████╗  ██████╔╝
██╔═══╝ ██║   ██║██║███╗██║██╔══╝  ██╔══██╗
██║     ╚██████╔╝╚███╔███╔╝███████╗██║  ██║
╚═╝      ╚═════╝  ╚══╝╚══╝ ╚══════╝╚═╝  ╚═╝
```
# class Power (Details)
> namespace: **VDM\Joomla\Componentbuilder\Compiler**
```uml
@startuml
class Power  #Gold {
  + array $active
  + array $namespace
  + array $composer
  + array $superpowers
  # string $fixUrl
  # array $state
  # array $retry
  # Config $config
  # Placeholder $placeholder
  # Customcode $customcode
  # Gui $gui
  # Superpower $superpower
  # $db
  # $app
  + __construct(?Config $config = null, ?Placeholder $placeholder = null, ...)
  + load(array $guids) : void
  + get(string $guid, int $build) : ?object
  - set(string $guid) : bool
  - isPowerSet(string $guid) : bool
  - isGuidValid(string $guid) : bool
  - getPowerData(string $guid) : ?object
  - setNamespace(string $guid) : bool
  - setUseSelection(string $guid, array $use, ...) : void
  - setLoadSelection(string $guid) : void
  - setComposer(string $guid) : void
  - setImplements(string $guid, array $use) : void
  - setExtend(string $guid, array $use, ...) : void
  - setUseAs(string $guid, array $use, ...) : void
  - getCleanNamespace(string $namespace) : string
  - getUseNamespace(string $namespace, string $as = 'default') : string
  - addToHeader(string $guid, string $string) : void
  - setLicensingTemplate(string $guid, array $guiMapper) : void
  - setHeader(string $guid, array $guiMapper) : void
  - setMainClassCode(string $guid, array $guiMapper) : void
  - setSuperPowers(string $guid) : void
}

note right of Power::__construct
  Constructor.

  since: 3.2.0
  
  arguments:
    ?Config $config = null
    ?Placeholder $placeholder = null
    ?Customcode $customcode = null
    ?Gui $gui = null
    ?Superpower $superpower = null
end note

note left of Power::load
  load all the powers linked to this component

  since: 3.2.0
  return: void
end note

note right of Power::get
  Get a power

  since: 3.2.0
  return: ?object
end note

note left of Power::set
  Set a power

  since: 3.2.0
  return: bool
end note

note right of Power::isPowerSet
  Check if the power is already set

  since: 3.2.0
  return: bool
end note

note left of Power::isGuidValid
  Validate the GUID

  since: 3.2.0
  return: bool
end note

note right of Power::getPowerData
  Get the power data from the database

  since: 3.2.0
  return: ?object
end note

note left of Power::setNamespace
  Set the namespace for this power

  since: 3.2.0
  return: bool
end note

note right of Power::setUseSelection
  Set Use Classes

  since: 3.2.0
  return: void
  
  arguments:
    string $guid
    array $use
    array $as
end note

note left of Power::setLoadSelection
  Load Extra Classes

  since: 3.2.0
  return: void
end note

note right of Power::setComposer
  Set Composer Linked Use and Access Point

  since: 3.2.0
  return: void
end note

note left of Power::setImplements
  Set Implements Interface classes

  since: 3.2.0
  return: void
end note

note right of Power::setExtend
  Set Extend Class

  since: 3.2.0
  return: void
  
  arguments:
    string $guid
    array $use
    array $as
end note

note left of Power::setUseAs
  Set Extra Use Classes

  since: 3.2.0
  return: void
  
  arguments:
    string $guid
    array $use
    array $as
end note

note right of Power::getCleanNamespace
  Get Clean Namespace without use or ; as part of the name space

  since: 3.2.0
  return: string
end note

note left of Power::getUseNamespace
  Get [use Namespace\Class;]

  since: 3.2.0
  return: string
end note

note right of Power::addToHeader
  Add to class header

  since: 3.2.0
  return: void
end note

note left of Power::setLicensingTemplate
  Set the power licensing template

  since: 3.2.0
  return: void
end note

note right of Power::setHeader
  Set the power header script

  since: 3.2.0
  return: void
end note

note left of Power::setMainClassCode
  Set the power main class code

  since: 3.2.0
  return: void
end note

note right of Power::setSuperPowers
  Set the super powers of this power

  since: 3.2.0
  return: void
end note
 
@enduml
```

---
```
     ██╗ ██████╗██████╗
     ██║██╔════╝██╔══██╗
     ██║██║     ██████╔╝
██   ██║██║     ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
 ╚════╝  ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

