Skip to content

Commit d804406

Browse files
committed
Fix: Null type error in php8.x runtime
1 parent ae7e4fd commit d804406

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

src/PhpWord/Writer/EPub3/Part/ContentXhtml.php

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace PhpOffice\PhpWord\Writer\EPub3\Part;
44

5+
use PhpOffice\PhpWord\Element\Text;
6+
use PhpOffice\PhpWord\Element\TextRun;
57
use PhpOffice\PhpWord\PhpWord;
68
use XMLWriter;
79

@@ -64,33 +66,19 @@ public function write(): string
6466
$xmlWriter->writeAttribute('class', 'section');
6567

6668
foreach ($section->getElements() as $element) {
67-
if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) {
69+
if ($element instanceof TextRun) {
6870
$xmlWriter->startElement('p');
69-
foreach ($element->getElements() as $textElement) {
70-
if ($textElement instanceof \PhpOffice\PhpWord\Element\Text) {
71-
$xmlWriter->text($textElement->getText());
72-
} elseif (method_exists($textElement, 'getText')) {
73-
$xmlWriter->text($textElement->getText());
74-
}
75-
}
71+
$this->writeTextRun($element, $xmlWriter);
7672
$xmlWriter->endElement(); // p
7773
} elseif (method_exists($element, 'getText')) {
78-
$textValue = $element->getText();
79-
if ($textValue instanceof \PhpOffice\PhpWord\Element\TextRun) {
80-
$xmlWriter->startElement('p');
81-
foreach ($textValue->getElements() as $childElement) {
82-
if ($childElement instanceof \PhpOffice\PhpWord\Element\Text) {
83-
$xmlWriter->text($childElement->getText());
84-
} elseif (method_exists($childElement, 'getText')) {
85-
$xmlWriter->text($childElement->getText());
86-
}
87-
}
88-
$xmlWriter->endElement(); // p
89-
} else {
90-
$xmlWriter->startElement('p');
91-
$xmlWriter->text($textValue);
92-
$xmlWriter->endElement(); // p
74+
$text = $element->getText();
75+
$xmlWriter->startElement('p');
76+
if ($text instanceof TextRun) {
77+
$this->writeTextRun($text, $xmlWriter);
78+
} elseif ($text !== null) {
79+
$xmlWriter->text((string) $text);
9380
}
81+
$xmlWriter->endElement(); // p
9482
}
9583
}
9684

@@ -102,4 +90,28 @@ public function write(): string
10290

10391
return $xmlWriter->outputMemory(true);
10492
}
93+
94+
protected function writeTextElement(\PhpOffice\PhpWord\Element\AbstractElement $textElement, XMLWriter $xmlWriter): void
95+
{
96+
if ($textElement instanceof Text) {
97+
$text = $textElement->getText();
98+
if ($text !== null) {
99+
$xmlWriter->text((string) $text);
100+
}
101+
} elseif (is_object($textElement) && method_exists($textElement, 'getText')) {
102+
$text = $textElement->getText();
103+
if ($text instanceof TextRun) {
104+
$this->writeTextRun($text, $xmlWriter);
105+
} elseif ($text !== null) {
106+
$xmlWriter->text((string) $text);
107+
}
108+
}
109+
}
110+
111+
protected function writeTextRun(TextRun $textRun, XMLWriter $xmlWriter): void
112+
{
113+
foreach ($textRun->getElements() as $element) {
114+
$this->writeTextElement($element, $xmlWriter);
115+
}
116+
}
105117
}

0 commit comments

Comments
 (0)