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

/**
 * 自动写入时间戳
 * @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;
}// 同上
时间: 2024-10-27 08:20:41

[李景山php]每天TP5-20170110|thinkphp5-Model.php-3的相关文章

[李景山php]每天laravel-20161010|Validator.php-10

   /**     * Validate the guessed extension of a file upload is in a set of file extensions.     *     * @param  string  $attribute     * @param  mixed  $value     * @param  array   $parameters     * @return bool     */    protected function validate

[李景山php]每天TP5-20161207|Loader.php-5

/**  * 实例化(分层)模型  * @param string $name         Model名称  * @param string $layer        业务层名称  * @param bool   $appendSuffix 是否添加类名后缀  * @param string $common       公共模块名  * @return Object  * @throws ClassNotFoundException  */ public static function m

[李景山php]每天TP5-20170115|thinkphp5-Model.php-8

    /**      * 预载入关联查询 返回模型对象      * @access public      * @param Model     $result 数据对象      * @param string    $relation 关联名      * @return Model      */     public function eagerlyResult($result, $relation)     {         return $this->relation()->

[李景山php]每天TP5-20170108|thinkphp5-Model.php-1

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 http://thinkphp.cn All 

[李景山php]每天TP5-20161217|thinkphp5-helper.php-2

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 http://thinkphp.cn All 

[李景山php]每天TP5-20161224|thinkphp5-Console.php-1

namespace think; use think\console\Command;// 控制台 命令 use think\console\command\Help as HelpCommand; // 帮助命令 use think\console\Input;// 输入 use think\console\input\Argument as InputArgument;// 输入参数 use think\console\input\Definition as InputDefinition;

[李景山php]每天TP5-20161221|thinkphp5-jump.php

<?php /**  * 用法:  * load_trait('controller/Jump');  * class index  * {  *     use \traits\controller\Jump;  *     public function index(){  *         $this->error();  *         $this->redirect();  *     }  * }  */ namespace traits\controller; use

[李景山php]thinkphp核心源码注释|Driver.class.php

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 2006-2014 http://thinkphp.cn A

[李景山php]thinkphp核心源码注释|Lite.class.php

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 2006-2014 http://thinkphp.cn A