我想要实现的(PHP 5.3)是拥有一个访问器来访问我的表示,例如页面的 HTML 正文。与其直接回显所有内容,不如将其添加到该单例中的条目数组中。例子:myBodyClass::add('<h1>Title</h1>');
add()
被声明为public static function add($strEntry) {}
现在我应该将它们添加到静态数组 $entries 中,例如self::$entries[] = $strEntry;
(类 VersionB)还是应该使用类似的实例self::getInstance()->entries[] = $strEntry;
?(类 VersionA ) (因此 getInstance() 当然会实例化 '...new self;' 如有必要)
恐怕我还不太明白其中的区别。
我的问题的第二部分是如何打印对象。PHP手册关于为什么 __toString() 不能是静态的有点薄 - 但是我再次理解解析器在区分echo myBodyClass
常量时存在问题(这就是原因吗?)
理想情况下,我想add()
根据需要经常调用以添加主体的所有部分,然后echo myHeaderClass, myBodyClass, myFooterClass;
在脚本末尾使用类似的东西,它应该调用__toString()
类中的方法。
感谢您为我指明正确的方向。
代码示例
class VersionA
{
private static $instance = null;
private $entries = array();
private final function __construct(){}
private final function __clone(){}
private static final function getInstance()
{
if (self::$instance === null) :
self::$instance = new self;
endif;
return self::$instance;
}
public static function add($sString)
{
self::getInstance()->entries[] = $sString;
}
public static function getHtml()
{
return implode("\r\n", self::getInstance()->entries);
}
}
class VersionB
{
private static $entries = array();
private final function __construct(){}
private final function __clone(){}
public static function add($sString)
{
self::$entries[] = $sString;
}
public static function getHtml()
{
return implode("\r\n", self::$entries);
}
}