• Yii 基础导读


    参考:深入理解Yii2.0 www.digpage.com


    一、Yii 使用经历和感想

    我在学习阶段使用过ThinkPHP, 自工作伊始就一直使用YII,大多数工作局限在MVC。相当多的代码是参考文档一点点凑起来的,只需要少量的代码就可以完成很多工作,甚至Yii还提供了代码生成工具Gii。对于这些代码知其用不知其所以然,反正觉得Yii真是方便。

    这个框架对于生成基础的表单,数据展示也是一套一套的,但是想要进行修改时就比较头疼了,比如一个GridView, 当我想在某一列中加上一个class时就不知从何下手,并不知道他还有什么属性可以配置。在它有强大的类手册可以参考,这一点对我的开发帮助很大。

    在上面这个场景中,我们可以先找到 yiigridGridView,发现它有一个$columns属性可以配置,继而找到这个属性的类yiigridDataColumn,通过$filterInputOptions属性便可以自定义这个列的class了。这只是冰山一角,坑是永远填不完的,比如model中的行为是如何自动完成created_at和update_at的写入的呢?又是如何完成验证的呢?这些问题一个接一个。

    基于这些使用经验,隐约感觉到Yii的强大,就像是一辆汽车每一个零部件可追溯。源于同事的推荐,发现一个神奇的网站,www.digpage.com看完它似醍醐灌顶,如此往复,任督二脉打通也指日可待。

     

    二、基础指哪些以及它们之间的关联

    Yii 基础指属性(Property),事件(Event),行为(Behavior)。

    属性构成了一切对象的基础。在Yii中很常见的配置就是各种属性。

    事件模型就是设计模式中的“观察者模式”:当对象的状态发生了变化,那么这个对象可以将该事件通知其它对象。

    为了使用事件模型,需要实现这三个步骤:1、定义事件;2、绑定事件句柄;3、触发事件。

    事件在Yii中无处不在,beforeSave(), afterSave(), beforeValidate(), afterValidate()... 一个请求周期中会触发n个事件,我们就可以利用这些事件搞事啦

    行为可以将自己的属性和方法注入到要绑定的类中去,一个类还可以绑定多个行为,通过在行为中定义事件完成数据处理。

    自动完成 created_at 和 update_at 就是使用了yiiehaviorsTimeStampBehavior, 这个行为继承自yiiehaviorsAttributeBehavior, 这个类中定义了要处理的两个事件beforeInsert(), beforeUpdate() 以及它们要触发的方法(方法里就是给created_at/updated_at赋值), 当一个模型使用了TimeStampBehavior就可以自动处理created_at/updated_at

    三、事件/行为的应用场景

    1. 我想在请求过来的时候,先将请求的 IP 的记录到数据库,然后才进行对应的相应的请求处理。

    2. 当用户评论一篇文章时,可以触发一个评论对象添加(“add”)事件。

    3. 邮件程序对象成功发出消息时可触发 messageSent 事件。如想追踪成功发送的消息,可以附加相应追踪代码到 messageSent 事件。

    4. 用户登录成功后触发afterLogin事件。可以在该事件处绑定yii AfterLoginBehavior行为,更新用户信息

    参考:Yii事件使用业务场景 http://www.jianshu.com/p/da4c3cfe55fa

    其实行为的最终目地还是绑定事件,这里有一个很清晰的例子:场景是在后台,每个用户操作了什么(也就是访问了那个链接),都会记录日志

    访问: https://yii-china.org/topic/740

    还有其它的应用场景请留言帮助我完善这篇博文。

    关于事件的触发/绑定,行为的定义/绑定/解除强烈推荐大家看《深入理解Yii2.0》


  • 相关阅读:
    调试IPV6
    [super class]和[self class]
    Django2 + python3 上传图片
    django2 + python3 显示静态文件中的图片
    机器工厂——贪心
    Handstand 2——AT(先打表)
    Low Elements--AT
    Double Factorial——AT
    Brick Break——AT
    变音量——动态规划
  • 原文地址:https://www.cnblogs.com/yangqi7/p/6956010.html
Copyright © 2020-2023  润新知