Domain: antoinekatan.com
Server Adress: 10.127.20.23
privdayz.com
<?php
namespace QuartMikadoNamespace\Modules\Header\Lib;
/**
* Class that builds header object and holds reference to it
*
* Class HeaderFactory
*/
class HeaderFactory {
/**
* Instance of current class
*
* @var
*/
private static $instance;
/**
* Instance of HeaderType
*
* @var
*/
private $headerObject;
/**
* Private construct because of singletone
*/
private function __construct() {
}
/**
* Returns current header object
*
* @return mixed
*/
public function getHeaderObject() {
return $this->headerObject;
}
/**
* Returns instance of current class
*
* @return HeaderFactory
*/
public static function getInstance() {
if ( self::$instance == null ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Checks if header object, whether passed as parameter or not, is valid object that extends HeaderType class
*
* @param null $header_object
*
* @return bool
*/
public function validHeaderObject( $header_object = null ) {
$header_object = $header_object == null ? $this->headerObject : $header_object;
return is_subclass_of( $header_object, 'QuartMikadoNamespace\Modules\Header\Lib\HeaderType' );
}
/**
* Builds header object based on option read from database
*
* @param string $headerType value read from database
* @param array $headerTypesOption
*
* @return bool|HeaderType
*/
public function build( $headerType, $headerTypesOption ) {
if ( ! empty( $headerType ) && ! empty( $headerTypesOption ) ) {
foreach ( $headerTypesOption as $header_type_option_key => $header_type_option_value ) {
if ( $headerType === $header_type_option_key ) {
$this->headerObject = new $header_type_option_value;
break;
}
}
return $this->headerObject;
} else {
return false;
}
}
}
