<?php
abstract class HTMLDecorator {
/** @var \ArrayObject */
protected $notes;
public function format(){
$html = '';
foreach ($this->getNodes() as $node)
$html .= "<p>{$node}</p>";
return $html;
}
}
class HTML extends HTMLDecorator{
public function __construct(){
$this->nodes = new \ArrayObject();
}
public function getNodes(){
return $this->nodes;
}
}
class BlockHtml extends HTMLDecorator{
protected $html;
public function __construct(HTMLDecorator $html){
$this->html = $html;
}
public function getNodes()
{
$this->html->getNodes()->append('Block html');
return $this->html->getNodes();
}
}
class ImageHtml extends HTMLDecorator{
protected $html;
public function __construct(HTMLDecorator $html){
$this->html = $html;
}
public function getNodes()
{
$this->html->getNodes()->append('Image html');
return $this->html->getNodes();
}
}
$html = new HTML();
$html = BlockHTML($html);
$html = ImageHTML($html);
echo $html->format();
Deprecated: Creation of dynamic property HTML::$nodes is deprecated in /in/7Ub0Q on line 22
Fatal error: Uncaught Error: Call to undefined function BlockHTML() in /in/7Ub0Q:65
Stack trace:
#0 {main}
thrown in /in/7Ub0Q on line 65
Process exited with code 255.
Fatal error: Uncaught Error: Call to undefined function BlockHTML() in /in/7Ub0Q:65
Stack trace:
#0 {main}
thrown in /in/7Ub0Q on line 65
Process exited with code 255.
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/7Ub0Q on line 22
Fatal error: Call to undefined function BlockHTML() in /in/7Ub0Q on line 65
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_CLASS in /in/7Ub0Q on line 3
Process exited with code 255.