['class' => 'PhpOffice\PhpWord\Reader\Word2007\Styles', 'xml' => '{toReplace}'],
'document' => ['class' => 'PhpOffice\PhpWord\Reader\Word2007\Document', 'xml' => '{toReplace}'],
'footnotes' => ['class' => 'PhpOffice\PhpWord\Reader\Word2007\Footnotes', 'xml' => '{toReplace}'],
'endnotes' => ['class' => 'PhpOffice\PhpWord\Reader\Word2007\Endnotes', 'xml' => '{toReplace}'],
'settings' => ['class' => 'PhpOffice\PhpWord\Reader\Word2007\Settings', 'xml' => '{toReplace}'],
];
/**
* Builds a PhpWord instance based on the xml passed.
*
* @return \PhpOffice\PhpWord\PhpWord
*/
protected function getDocumentFromString(array $partXmls = [])
{
$file = __DIR__ . '/_files/temp.docx';
$zip = new ZipArchive();
$zip->open($file, ZipArchive::CREATE | ZipArchive::OVERWRITE);
foreach ($this->parts as $partName => $part) {
if (array_key_exists($partName, $partXmls)) {
$zip->addFromString("{$partName}.xml", str_replace('{toReplace}', $partXmls[$partName], $this->parts[$partName]['xml']));
}
}
$zip->close();
$phpWord = new PhpWord();
foreach ($this->parts as $partName => $part) {
if (array_key_exists($partName, $partXmls)) {
$className = $this->parts[$partName]['class'];
$reader = new $className($file, "{$partName}.xml");
$reader->read($phpWord);
}
}
unlink($file);
return $phpWord;
}
}