Files
awo-hamburg-intranet/mysyde/common/classes/RenderableStringTransformer.php
2026-02-17 14:56:23 +01:00

55 lines
1.6 KiB
PHP

<?php
namespace DynCom\mysyde\common\classes;
use DOMDocument;
use DOMNode;
use DOMNodeList;
use DynCom\mysyde\common\interfaces\View;
use Traversable;
/**
* Created by PhpStorm.
* User: Michael Bauer
* Date: 7/14/2015
* Time: 1:13 AM
*/
class RenderableStringTransformer
{
/**
* @param $element
* @return string
*/
public function toString($element) {
$el = '';
//Resolve callable
$element = is_callable($element) ? $element() : $element;
if(((is_scalar($element) || is_bool($element)))) {
$el = (string)$element;
} elseif($element instanceof DOMDocument) {
$el = $element->saveXML($element->firstChild);
} elseif( $element instanceof DOMNode) {
$el = $element->ownerDocument->saveXML($element);
} elseif( $element instanceof DOMNodeList) {
$wrapperString = '';
$len = $element->length;
for($i = 0;$i < $len;++$i) {
$curr = $element->item($i);
$wrapperString .= $curr->ownerDocument->saveXML($curr);
}
} elseif($element instanceof View) {
$el = $element->render();
} elseif($element instanceof Form) {
if(!$element->isFormRendered()) {
$element->render();
}
$el = $element->getRenderedContent();
} elseif ($element instanceof Traversable) {
$wrapperString = '';
foreach($element as $elementField) {
$wrapperString .= $this->toString($elementField);
}
}
return $el;
}
}