TinkPHP 的读取器(又称获取器)的妙用

学习和工作是分不开的,总有你不知道的,也总有比你牛逼的人;俗话说的好哇!叫做专业与专业之间只差两个字——高度(深度)

使用thinkPHP开发了很久,才逐步回来仔细审视官方搞的说明文档,其实有点不行哇,但是只要有心,反过来看也没有什么不好的。

与此同时,我也终于直到为什么官方的文档写的是这个结构了,如果不是特别有耐心的同学,估计就此失去了信心。如果和我说的一样,那么你可能需要去找一些高手录制的教程来辅助你的学习,并第一时间应用到你的项目中去。只有这样,你才有可能回来重读官方文档,至少我是这么干的,但不代表所有人哦。
本文介绍读取器,官方如此介绍

获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用:

class User extends Model 
{
    public function getStatusAttr($value)
    {
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$value];
    }
}

上面是官方手册给的实例,那么在世纪开发中,能快速帮我们解决一些什么问题呢?
1、就是转换数据,如根据分类的ID返回他的分类名,这在开发中经常遇到是吧!
2、给定一个配置,然后拼接返回一个正确直观的数据
下面来一个例子,这个例子是来自于七月的讲座:

public function getUrlAttr($value,$data){
    $finaUrl=$value;
    if($data['from] == 1){
        $finaUrl=config('setting.img_prefix').$value;
    }
    return $finalUrl;
}

本例中,getUrlAttr接收两个参数,第一个自然是你的字段值,第二个是一个数组,他包含你已经找到的单条数据的数组。
config来自于thinkPHP的extra,关于extra我专门记录一篇笔记,等我把这个知识点记忆牢固了然后再写一篇来加强一下,这里按下不表。
他这个读取器和AOP切面思维是有很强的相关性的,读取器是AOP的一个表达方式。你觉得呢?


参考文献

相关文章