95 lines
1.9 KiB
PHP
95 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Caxy\HtmlDiff\Table;
|
||
|
|
||
|
/**
|
||
|
* Class AbstractTableElement
|
||
|
* @package Caxy\HtmlDiff\Table
|
||
|
*/
|
||
|
abstract class AbstractTableElement
|
||
|
{
|
||
|
/**
|
||
|
* @var \DOMElement
|
||
|
*/
|
||
|
protected $domNode;
|
||
|
|
||
|
/**
|
||
|
* AbstractTableElement constructor.
|
||
|
*
|
||
|
* @param \DOMElement|null $domNode
|
||
|
*/
|
||
|
public function __construct(\DOMElement $domNode = null)
|
||
|
{
|
||
|
$this->domNode = $domNode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return \DOMElement
|
||
|
*/
|
||
|
public function getDomNode()
|
||
|
{
|
||
|
return $this->domNode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param \DOMElement $domNode
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function setDomNode(\DOMElement $domNode)
|
||
|
{
|
||
|
$this->domNode = $domNode;
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getInnerHtml()
|
||
|
{
|
||
|
$innerHtml = '';
|
||
|
|
||
|
if ($this->domNode) {
|
||
|
foreach ($this->domNode->childNodes as $child) {
|
||
|
$innerHtml .= static::htmlFromNode($child);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $innerHtml;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $name
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getAttribute($name)
|
||
|
{
|
||
|
return $this->domNode->getAttribute($name);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param \DOMDocument $domDocument
|
||
|
*
|
||
|
* @return \DOMElement
|
||
|
*/
|
||
|
public function cloneNode(\DOMDocument $domDocument)
|
||
|
{
|
||
|
return $domDocument->importNode($this->getDomNode()->cloneNode(false), false);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param \DOMElement $node
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function htmlFromNode($node)
|
||
|
{
|
||
|
$domDocument = new \DOMDocument();
|
||
|
$newNode = $domDocument->importNode($node, true);
|
||
|
$domDocument->appendChild($newNode);
|
||
|
return trim($domDocument->saveHTML());
|
||
|
}
|
||
|
}
|