首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getDate函数

getDate函数
EN

Stack Overflow用户
提问于 2014-01-09 09:23:31
回答 2查看 165关注 0票数 1

我一次又一次地遇到这个问题:

您有一个具有日期(日期时间) $object->date的对象,它以几种格式表示

在最前面.在某些情况下,可以是空的

所以我通常的方法是在模型中:

代码语言:javascript
复制
public function getDate(){
    if($this->date){
        return DateTime($this->date);
    }
    return null;
}

并在$object->getDate()->format('d-m-Y')中使用;

这很酷..。但如前所述,可能有些对象的日期为空,

而上述调用将导致"...format() on a non object...“异常。

这方面的工作是始终检查是否为空:

$object->getDate() ? $object->getDate()->format('d-m-Y') : "";

这太长太丑了,每次你需要约会的时候都不能用。

因此,我的最后解决方案是将检查合并到方法中:

代码语言:javascript
复制
public function getDate($format = false, $empty_str = ""){
    if($format){
        if($this->date){
            $dt = new DateTime($this->date);
            return $dt->format($format);
        }
        return $empty_str;    
    }else{
        return new DateTime($this->date);
    }
}

编辑:在几年后回顾了我的代码,我想出了更好的格式:

代码语言:javascript
复制
public function getDate($format = false, $empty_str = ""){ 
    if (!$this->date) {
        return $empty_str;
    }

    $dt = new DateTime($this->date);
    return ($format) ? $dt->format($format) : $dt;
}

它的用法很酷:

代码语言:javascript
复制
$object->getDate('d-m-Y');
$object->getDate('d-m-Y', 'no date');
$object->getDate(); // DateTime object

我唯一关心的是..。该方法破坏了几个OOP原则,而且看起来太自定义了。

有什么更好的方法吗?这是一个常见的问题,所以应该有一个好的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2014-01-09 09:42:50

您可以编写一个特定的类,如

代码语言:javascript
复制
class NullObject {

    public function __get($var) {
        return null;
    }

    public function __call($funcname, $params) {
        return null;
    }

}

而不是简单地返回null,而是这样做

代码语言:javascript
复制
return new NullObject();
票数 2
EN

Stack Overflow用户

发布于 2014-01-09 09:31:51

代码语言:javascript
复制
public function getDate($format = "default format", $empty_str = ""){

    if($this->date){
        $dt = new DateTime($this->date);
        return $dt->format($format);
    }
    return $empty_str;  
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21016089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档