| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------namespace think\model\concern;use DateTime;/** * 自动时间戳 */trait TimeStamp{    /**     * 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型     * @var bool|string     */    protected $autoWriteTimestamp;    /**     * 创建时间字段 false表示关闭     * @var false|string     */    protected $createTime = 'create_time';    /**     * 更新时间字段 false表示关闭     * @var false|string     */    protected $updateTime = 'update_time';    /**     * 时间字段显示格式     * @var string     */    protected $dateFormat;    /**     * 时间日期字段格式化处理     * @access protected     * @param  mixed $format    日期格式     * @param  mixed $time      时间日期表达式     * @param  bool  $timestamp 是否进行时间戳转换     * @return mixed     */    protected function formatDateTime($format, $time = 'now', $timestamp = false)    {        if (empty($time)) {            return;        }        if (false === $format) {            return $time;        } elseif (false !== strpos($format, '\\')) {            return new $format($time);        }        if ($timestamp) {            $dateTime = new DateTime();            $dateTime->setTimestamp($time);        } else {            $dateTime = new DateTime($time);        }        return $dateTime->format($format);    }    /**     * 检查时间字段写入     * @access protected     * @return void     */    protected function checkTimeStampWrite()    {        // 自动写入创建时间和更新时间        if ($this->autoWriteTimestamp) {            if ($this->createTime && !isset($this->data[$this->createTime])) {                $this->data[$this->createTime] = $this->autoWriteTimestamp($this->createTime);            }            if ($this->updateTime && !isset($this->data[$this->updateTime])) {                $this->data[$this->updateTime] = $this->autoWriteTimestamp($this->updateTime);            }        }    }}
 |