PHP XSLT Transformation

<?php
/**
 * Created by PhpStorm.
 * User: marcel
 * Date: 16.01.19
 * Time: 09:37
 */

namespace lib;
use \DOMDocument;
use \XSLTProcessor;

class XSLTransformer{


    const OUTPUT_AS_DOC = 'doc';
    const OUTPUT_AS_FILE = 'file';
    const OUTPUT_AS_BOTH = 'both';

    private $xml_in_doc;
    private $result_doc;

    private $xml_in_file;

    private $xsl_doc;
    private $xsl_file;

    private $xsl_params;
    private $use_php_functions;

    /**
     * @var DOMDocument
     */
    private $xml;

    /**
     * @var DOMDocument
     */
    private $xsl;

    /**
     * @var XSLTProcessor
     */
    private $xslt;


    /**
     * XSLTransformer constructor.
     *
     * @param array $transform_params
     */
    public function __construct ( $transform_params = [] ){

        # Defaults
        $this -> use_php_functions = TRUE;

    }


    /**
     * Objekt-Konstruktor
     * Hilfsfunktion
     *
     */
    private function init_transform(){

        $this -> xml = new DOMDocument();
        $this -> xsl = new DOMDocument();
        $this -> xslt = new XSLTProcessor();

    }



    ############################ PUBLICS #############################



    /**
     * XML-Datei mit XML-Datei transformieren
     */
    public function xmlfile_with_xslfile(){


    }


    /**
     * XML-Dokument mit XML-Dokument transformieren
     */
    public function xmldoc_with_xsldoc(){

    }


    /**
     * XML-Datei mit XML-Dokument transformieren
     */
    public function xmlfile_with_xsldoc(){

    }


    /**
     * XML-Dokument mit XML-Datei transformieren
     */
    public function xmldoc_with_xslfile(){

        $this -> init_transform();
        $this -> load_xml_doc();
        $this -> xsl -> load( $this -> xsl_file );
        $this -> use_php_functions();
        $this -> use_xsl_params();
        $this -> xslt -> importStylesheet( $this -> xsl );

    }


    /**
     * @return string
     */
    public function get_result_xml(){
        return $this -> xslt -> transformToXml( $this -> xml );
    }

    /**
     * @return DOMDocument
     */
    public function get_result_dom(){
        return $this -> xslt -> transformToDoc( $this -> xml );
    }

    #public function get_result



    ############################ HELPER #############################



    /**
     * Parameter an das XSL-objekt übergeben
     * Hilfsfunktion
     *
     */
    private function use_xsl_params(){

        foreach ( $this -> xsl_params AS $key => $value) {
            $this -> xslt -> setParameter('' , $key , $value );
        }

    }


    /**
     * Benutzt das Eingangsdokument aus einer XML-Datei, wenn es vorhanden ist
     * Hilfsfunktion
     *
     */
    private function load_xml_file(){

        if( !empty( $this -> xml_in_file ) ){
            $this -> xsl -> load( $this -> xml_in_file );
        }

    }


    /**
     * Benutzt das Eingangsdokument aus einem XML-Dokument, wenn es vorhanden ist
     * Hilfsfunktion
     *
     */
    private function load_xml_doc(){

        if( !empty( $this -> xml_in_doc ) ){
            $this -> xsl ->loadXML( $this -> xml_in_doc );
        }

    }


    /**
     * Aktiviert die PHP-Fuktionen, falls diese ausgewählt wurden
     * Hilfsfunktion
     */
    private function use_php_functions(){

        $this -> use_php_functions ? $this -> xslt -> registerPHPFunctions() : NULL;

    }



    ############################ SETTER #############################



    /**
     * @param $xml_in_doc string
     */
    public function set_xml_in_doc( $xml_in_doc ){
        $this -> xml_in_doc = $xml_in_doc;
    }

    /**
     * @param $xml_in_file string
     */
    public function set_xml_in_file( $xml_in_file ){
        $this -> xml_in_file = $xml_in_file;
    }

    /**
     * @param $xsl_doc string
     */
    public function set_xsl_doc( $xsl_doc ){
        $this -> xsl_doc = $xsl_doc;
    }

    /**
     * @param $xsl_file string
     */
    public function set_xsl_file( $xsl_file ){
        $this -> xsl_file = $xsl_file;
    }

    /**
     * @param $xsl_params array
     */
    public function set_xsl_params( $xsl_params ){
        $this -> xsl_params = $xsl_params;
    }

    /**
     * @param $use_php bool
     */
    public function set_use_php_functions( $use_php ){
        $this -> use_php_functions = $use_php;
    }

}

Anwendungsbeispiel:

    /**
     * XSL-Transformaton mit stringbasierten XML-Dokument und Dateipfad zum DOM-Object
     *
     * @param null   $xmldoc
     * @param string $xslfile
     * @param array  $xsl_params
     *
     *
     * Transformationsergebnis:
     *
     * @return DOMDocument
     *
     */
    protected function xslt_doc_file2dom ( $xmldoc = NULL , $xslfile , $xsl_params = [] )
    {

        $xslt = new XSLTransformer();

        $xslt -> set_xsl_params( $xsl_params );
        $xslt -> set_xml_in_doc( $xmldoc );
        $xslt -> set_xsl_file( $xslfile );

        $xslt -> xmldoc_with_xslfile();

        return $xslt -> get_result_dom();

    }