有关php的DateTime类的恼人事情之一是它没有__toString()
方法,这意味着它每次尝试在字符串上下文中使用它时都会引发错误。所以我扩展它:make date_create()与DateTime子类一起工作
class ZDateTime extends DateTime {
private $zformat='Y-m-d H:i:s';
function __toString() {
return $this->format($this->zformat);
}
function set_format($format){
$this->zformat=$format; //leaving out format validation for brevity
}
}
但现在我已经失去了所有的DateTime有一个像date_create()
漂亮的程序功能和众多的上市here其他功能。
我知道程序函数只是DateTime
类方法的别名。但它们通常更易于使用,并且散布在我的代码中。将它们捞出将是一件非常痛苦的事情。那么,任何想法如何让date_create()
返回一个ZDateTime
对象?
我同意使用搜索和替换评论。我认为这是对'namespace'的一种滥用,用它来以不兼容的方式覆盖核心PHP函数。没有理由不以正确的方式去做。 – Matthew 2011-04-01 20:46:21
@konforce:我不认为这是一种滥用。这是命名空间的一个优点。使用名称空间的一个要点是能够定义已定义的符号。我绝对认为搜索和替换更好,但回答OP的问题,是的,它可以完成,唯一的方法是使用名称空间。 – netcoder 2011-04-01 21:06:31
我认为这是一个滥用,因为它是一个预先存在的问题的绷带。也就是说,如果你开始新鲜的话,这不是你想要解决这个特殊问题的自然事情。引入命名空间实质上获得一个免费的'__toString()'on日期对象对我来说是矫枉过正的。 – Matthew 2011-04-01 21:15:30