有關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