26
26
*/
27
27
class Container extends AbstractElement
28
28
{
29
+ /**
30
+ * Namespace; Can't use __NAMESPACE__ in inherited class (ODText)
31
+ *
32
+ * @var string
33
+ */
34
+ protected $ namespace = 'PhpOffice \\PhpWord \\Writer \\Word2007 \\Element ' ;
35
+
29
36
/**
30
37
* Write element
31
38
*/
@@ -35,13 +42,12 @@ public function write()
35
42
$ container = $ this ->getElement ();
36
43
37
44
// Loop through subelements
38
- $ containerClass = basename (get_class ($ container ));
45
+ $ containerClass = substr (get_class ($ container ), strrpos ( get_class ( $ this ), '\\' ) + 1 );
39
46
$ subelements = $ container ->getElements ();
40
47
$ withoutP = in_array ($ containerClass , array ('TextRun ' , 'Footnote ' , 'Endnote ' , 'TextBox ' )) ? true : false ;
41
48
if (count ($ subelements ) > 0 ) {
42
49
foreach ($ subelements as $ subelement ) {
43
- $ writerClass = substr (get_class ($ this ), 0 , strrpos (get_class ($ this ), '\\' )) . '\\' .
44
- basename (get_class ($ subelement ));
50
+ $ writerClass = str_replace ('PhpOffice \\PhpWord \\Element ' , $ this ->namespace , get_class ($ subelement ));
45
51
if (class_exists ($ writerClass )) {
46
52
$ writer = new $ writerClass ($ xmlWriter , $ subelement , $ withoutP );
47
53
$ writer ->write ();
@@ -50,7 +56,7 @@ public function write()
50
56
} else {
51
57
// Special case for Cell: They have to contain a TextBreak at least
52
58
if ($ containerClass == 'Cell ' ) {
53
- $ writerClass = substr ( get_class ( $ this ), 0 , strrpos ( get_class ( $ this ), '\\' )) . '\\ TextBreak ' ;
59
+ $ writerClass = "{ $ this -> namespace }\\ TextBreak " ;
54
60
$ writer = new $ writerClass ($ xmlWriter , new TextBreakElement (), $ withoutP );
55
61
$ writer ->write ();
56
62
}
0 commit comments