资讯专栏INFORMATION COLUMN

使用YII 做开发的总结

mykurisu / 1226人阅读

摘要:也提供了命名查询的方式,比如需要获取最近一个月内发布的篇文章,如果经常性的用到这个查询,可以使用命名查询的方式来写。

这两天用YII开发了用户管理的功能,以前虽然也用YII框架开发过一些功能,但是总感觉对YII的使用还不是很熟练。
这次真正动手之前,先复习了一遍 yii-guide-1.1.14.pdf 这本书,上次看的时候太过于粗略了,这次仔仔细细的阅读了一遍。
说一下最直观的感受
1 对于表单字段的校验,简化了开发工作量
记得以前写表单验证,一般都是下面这样的代码

   if (!isset($_GET["token"]){
         echo "缺少参数 token"
         return ;
   }
   $token = $_GET["token"];
   if (length(token) < 8 || length(token) > 20){
         echo "token 的长度应该介于 8 到20个字符";
   }

在YII框架中,会精简为下面这样的代码:

   return array(
        array("token","required"),
        array("token", "length","max"=>20, "min"=>8, "message"=>"token 的长度应该介于 8 到20个字符")
   )

当有很多参数需要验证的时候,会节省大量的验证代码

2 对于数据库操作的简化
YII框架提供了两种操作数据库的方式,
一个叫YII DAO, 一个叫YII AR
YII DAO ,比较适用于编写SQL操作数据库的场景,构造合适的SQL语句,然后交给底层的DAO帮你执行
AR 这种方式,使用的是ORM模型,对于对象的操作一般使用 object.save(), object.delete(), object.find();
这样的方式,AR 还提供了像是 beforeSave(), afterSave()这样的事件处理机制,可以在对象保存的时候统一做一些事情,比如更新某个记录的更新时间,创建时间

AR 另外提供了关联表的操作,可以方便的对关联表中的对象进行获取等等的操作,使用的是lazy load的方式,不会拖慢查询效率。只有在明确访问关联表的属性的时候,才去执行查询。
AR 也提供了命名查询的方式,比如需要获取最近一个月内发布的10 篇文章,如果经常性的用到这个查询,可以使用命名查询的方式来写。
例如:

  class Article extends CArtiveRecord{
    public function scope(){
        return array(
           "recentlyPublished" => array(
              "condition" => " to_days(now())-to_days(create_time) < 30 ", //设定条件,创建时间在30天之内
              "limit"  => 3
            )
        );
    }  
  }

然后在使用的时候就可以使用 Article::model()->recentlyPublished()->find(); 来执行查询

3 其他

YII框架支持扩展,今天找了一个 Yii email的扩展,用来发送激活邮件

对于密码的支持,从YII 1.1.14版本开始,增加了对密码的支持,提供了一个帮助类,用来生成和校验密码

对于验证码的支持,内置了生成和验证验证码的组件,在demo中有现成的代码可以参考

对于国际化的支持,虽然这个不是硬需求,但是今天还是体验了一下,通过 yiic message命令可以自动生成国际化的翻译文件,当然,里面的内容需要自己填写。在最开始的时候有这样一个框架,后续万一有国际化的需求的话,也可以支持。
其他像是缓存组件,主题这样的功能,现在还没有用到,但是看YII框架都考虑到了,真正要写出一个这样的框架还是很有难度的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31849.html

相关文章

  • 全面解析Yii2跨域SSO登录逻辑

    摘要:简述本文章是我对如何实现登录做一个全面的逻辑解析。提醒注意在第步骤中,动态获取无的域名,此步骤必须做域名的判断处理,比如等这些可能出现的域名,以保证域名都能使用实现登录退出的机制。 简述 本文章是我对Yii2如何实现SSO登录做一个全面的逻辑解析。事实上,在此之前我也写过两篇文章关于SSO登录的实现方式以及进一步优化,包括这篇文章也都是介绍Yii2的SSO登录,逐步优化不断总结与分享,...

    daryl 评论0 收藏0
  • 全面解析Yii2跨域SSO登录逻辑

    摘要:简述本文章是我对如何实现登录做一个全面的逻辑解析。提醒注意在第步骤中,动态获取无的域名,此步骤必须做域名的判断处理,比如等这些可能出现的域名,以保证域名都能使用实现登录退出的机制。 简述 本文章是我对Yii2如何实现SSO登录做一个全面的逻辑解析。事实上,在此之前我也写过两篇文章关于SSO登录的实现方式以及进一步优化,包括这篇文章也都是介绍Yii2的SSO登录,逐步优化不断总结与分享,...

    2json 评论0 收藏0
  • 全面解析Yii2跨域SSO登录逻辑

    摘要:简述本文章是我对如何实现登录做一个全面的逻辑解析。提醒注意在第步骤中,动态获取无的域名,此步骤必须做域名的判断处理,比如等这些可能出现的域名,以保证域名都能使用实现登录退出的机制。 简述 本文章是我对Yii2如何实现SSO登录做一个全面的逻辑解析。事实上,在此之前我也写过两篇文章关于SSO登录的实现方式以及进一步优化,包括这篇文章也都是介绍Yii2的SSO登录,逐步优化不断总结与分享,...

    xingpingz 评论0 收藏0
  • 【Laravel学习篇 · 二】在Laravel中借鉴Yiiparams使用方法

    摘要:中的解决办法面对什么的情况,在中有一个很好的方法。博客原文地址学习篇二在中借鉴的一些使用方法有很多地方都不完善,还望大家指出修正,如果你觉得这个对你有用,还请点个赞,谢谢 前段时间本来准备学习 Laravel 的,后来因为换了工作的原因,又回到自己常用的 Yii 。现在要将 Laravel 重拾回来,开始学习这个被PHPer们喜爱的东西。 上一篇敢关于 Laravel 的文章 【Lar...

    liuhh 评论0 收藏0
  • 再看Yii2

    摘要:之前有两篇文章写了一些关于的和的,现在来全局性地看一看相对于到底有哪些改善。先说安装方法,在中已经使用来管理各种依赖关系,你在安装的时候完全可以用来进行安装,而且,还支持两个不同的安装版和。 之前有两篇文章写了一些关于Yii 2.0的MVC和Yii 2.0的Actived Record,现在来全局性地看一看Yii 2.0相对于Yii 1.1到底有哪些改善。个人总结有一下几个: 1.Y...

    waruqi 评论0 收藏0

发表评论

0条评论

mykurisu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<