[李景山php]每天TP5-20170110|thinkphp5-Model.php-3

來源:互聯網
上載者:User

標籤:think

/** * 自動寫入時間戳記 * @access public * @param string         $name 時間戳記欄位 * @return mixed */protected function autoWriteTimestamp($name){// 自動寫入 時間戳記    if (isset($this->type[$name])) {// 如果當期時間戳記欄位 擁有 類型        $type = $this->type[$name];// 擷取當前欄位 時間類型        if (strpos($type, ‘:‘)) {// 如果是冒號形式 則 後面的是參數            list($type, $param) = explode(‘:‘, $type, 2);        }        switch ($type) {            case ‘datetime‘:// 時間類型            case ‘date‘:// 日期類型                $format = !empty($param) ? $param : $this->dateFormat;// 擷取格式化資訊                $value  = date($format, $_SERVER[‘REQUEST_TIME‘]);// 擷取 結果                break;            case ‘timestamp‘:            case ‘int‘:                $value = $_SERVER[‘REQUEST_TIME‘];// 直接擷取結果                break;        }    } elseif (is_string($this->autoWriteTimestamp) && in_array(strtolower($this->autoWriteTimestamp), [‘datetime‘, ‘date‘, ‘timestamp‘])) {        $value = date($this->dateFormat, $_SERVER[‘REQUEST_TIME‘]);// 不區分欄位 的情況    } else {        $value = $_SERVER[‘REQUEST_TIME‘];// 如果不區分欄位,預設的情況 就是 設定值    }    return $value;}/** * 資料寫入 類型轉換 * @access public * @param mixed         $value 值 * @param string|array  $type 要轉換的類型 * @return mixed */protected function writeTransform($value, $type)// 資料寫入 類型轉換{    if (is_array($type)) {// 如果類型是數組        list($type, $param) = $type;// 列表 顯示 這些資訊    } elseif (strpos($type, ‘:‘)) {// 如果 這樣的類型格式        list($type, $param) = explode(‘:‘, $type, 2);// 也是類型 加 參數的形式    }    switch ($type) {        case ‘integer‘:// 整型 強制轉化            $value = (int) $value;            break;        case ‘float‘:// 小數            if (empty($param)) {                $value = (float) $value;// 沒有格式要求的 強制轉化            } else {                $value = (float) number_format($value, $param);// 增加了 數字格式化            }            break;        case ‘boolean‘:            $value = (bool) $value;// 布爾類型            break;        case ‘timestamp‘:            if (!is_numeric($value)) {// 時間戳記類型                $value = strtotime($value);            }            break;        case ‘datetime‘:// 時間格式化類型            $format = !empty($param) ? $param : $this->dateFormat;// 格式化            $value  = date($format, is_numeric($value) ? $value : strtotime($value));// 日期 格式化            break;        case ‘object‘:            if (is_object($value)) {                $value = json_encode($value, JSON_FORCE_OBJECT);// json 格式化 對象            }            break;        case ‘array‘:            $value = (array) $value;// 轉化為數組        case ‘json‘:            $option = !empty($param) ? (int) $param : JSON_UNESCAPED_UNICODE;// 編碼json 對象            $value  = json_encode($value, $option);            break;        case ‘serialize‘:            $value = serialize($value);// 序列化            break;    }    return $value;}/** * 擷取器 擷取資料對象的值 * @access public * @param string $name 名稱 * @return mixed * @throws InvalidArgumentException */public function getAttr($name)// 擷取器,擷取資料對象的值{    try {        $notFound = false;// 預設設定擷取成功        $value    = $this->getData($name);// 進行擷取動作    } catch (InvalidArgumentException $e) {        $notFound = true;        $value    = null;    }    // 檢測屬性擷取器    $method = ‘get‘ . Loader::parseName($name, 1) . ‘Attr‘;// 擷取 函數名字    if (method_exists($this, $method)) {        $value = $this->$method($value, $this->data);// 執行 相應 的函數,    } elseif (isset($this->type[$name])) {        // 類型轉換        $value = $this->readTransform($value, $this->type[$name]);// 讀取資料    } elseif ($notFound) {// 如果沒有找到        if (method_exists($this, $name) && !method_exists(‘\think\Model‘, $name)) {            // 不存在該欄位 擷取關聯資料            $value = $this->relation()->getRelation($name);// 擷取關聯資料            // 儲存關聯對象值            $this->data[$name] = $value;//儲存資料        } else {            throw new InvalidArgumentException(‘property not exists:‘ . $this->class . ‘->‘ . $name);        }    }    return $value;// 返回擷取的值}/** * 資料讀取 類型轉換 * @access public * @param mixed         $value 值 * @param string|array  $type 要轉換的類型 * @return mixed */protected function readTransform($value, $type){    if (is_array($type)) {        list($type, $param) = $type;    } elseif (strpos($type, ‘:‘)) {        list($type, $param) = explode(‘:‘, $type, 2);    }    switch ($type) {        case ‘integer‘:            $value = (int) $value;            break;        case ‘float‘:            if (empty($param)) {                $value = (float) $value;            } else {                $value = (float) number_format($value, $param);            }            break;        case ‘boolean‘:            $value = (bool) $value;            break;        case ‘timestamp‘:            $format = !empty($param) ? $param : $this->dateFormat;            $value  = date($format, $value);            break;        case ‘datetime‘:            $format = !empty($param) ? $param : $this->dateFormat;            $value  = date($format, strtotime($value));            break;        case ‘json‘:            $value = json_decode($value, true);            break;        case ‘array‘:            $value = is_null($value) ? [] : json_decode($value, true);            break;        case ‘object‘:            $value = empty($value) ? new \stdClass() : json_decode($value);            break;        case ‘serialize‘:            $value = unserialize($value);            break;    }    return $value;}// 同上


本文出自 “專註php 群號:414194301” 部落格,請務必保留此出處http://jingshanls.blog.51cto.com/3357095/1880218

[李景山php]每天TP5-20170110|thinkphp5-Model.php-3

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.